#define min(x,y)((x)<(y)?(x):(y))
H,W,M[101*104],S[101*104];
i,f,s;
main(){
	for(;scanf("%d%d\n",&W,&H),W;){
		W++;
		memset(M,'.',sizeof(M));
		memset(S,1,sizeof(S));
		for(i=0;i<H*W;i++){
			f=getchar();
			if(f=='&')
				S[W*2+i]=0;
			M[W*2+i]=f!='#';
		}
		for(f=1;f;){
			f=0;
			for(i=0;i<(H+2)*W;i++){
				s=S[W+i];
				s=min(s,S[W+i+1]+(M[W+i]<M[W+i+1]));
				s=min(s,S[W+i-1]+(M[W+i]<M[W+i-1]));
				s=min(s,S[W+i+W]+(M[W+i]<M[W+i+W]));
				s=min(s,S[W+i-W]+(M[W+i]<M[W+i-W]));
				if(S[W+i]!=s)
					S[W+i]=s,f=1;
			}
		}
		printf("%d\n",S[W]);
	}
	exit(0);
}