I,R=input,range H,W=map(int,I().split()) X,Y=R(W),R(H) S=[[s<'.'for s in I()]for i in Y] C=[[0]*(W+1)for i in R(H+1)] c=[0]*(W+1) for i in Y: t=0 for j in X:C[i+1][j+1],t=c[j+1]+t+S[i][j],t+S[i][j] c=C[i+1][:] def r(k): D=[[0]*(W+1)for i in R(H+1)] for i in R(H-k+1): for j in R(W-k+1): if C[i+k][j+k]-C[i+k][j]-C[i][j+k]+C[i][j]==k*k:D[i+k][j+k],D[i+k][j],D[i][j+k],D[i][j]=D[i+k][j+k]+1,D[i+k][j]-1,D[i][j+k]-1,D[i][j]+1 c=[0]*W for i in Y: t=0 for j in X:D[i][j],t=c[j]+t+D[i][j],t+D[i][j] if any(S[i][j]>D[i][j]for j in X):return 1 c=D[i][:] return 0 A=[1,min(H,W)+1] while A[0]+1