#include <iostream>
#include <queue>
using namespace std;

int vx[4]={0,1,0,-1};
int vy[4]={1,0,-1,0};

int main(){
	int n,m;
	
	
	while(cin>>n>>m,n){
		char MA[102][102];
		int co[102][102];
		queue<int>pX;
		queue<int>pY;
		queue<int>sX;
		queue<int>sY;
		
		for(int i=0;i<102;i++)for(int j=0;j<102;j++)MA[i][j]='.',co[i][j]=-1;
		for(int i=1;i<=m;i++){
			for(int j=1;j<=n;j++){
				cin>>MA[j][i];
				if(MA[j][i]=='&'){
					pX.push(j);
					pY.push(i);
					co[j][i]=0;
				}
			}
		}
		
		while(co[0][0]==-1){
			if(pX.empty()==0){
				int x=pX.front(),y=pY.front();
				
				for(int i=0;i<4;i++){
					if(0<=x+vx[i]&&x+vx[i]<=n+1&&0<=y+vy[i]&&y+vy[i]<=m+1){
						if(co[x+vx[i]][y+vy[i]]==-1){
							if(MA[x+vx[i]][y+vy[i]]=='.'){
								pX.push(x+vx[i]);
								pY.push(y+vy[i]);
								co[x+vx[i]][y+vy[i]]=co[x][y];
							}
							else{
								sX.push(x+vx[i]);
								sY.push(y+vy[i]);
								co[x+vx[i]][y+vy[i]]=co[x][y]+1;
							}
						}
					}
				}
				pX.pop();
				pY.pop();
			}
			else{
				int x=sX.front(),y=sY.front();
				
				for(int i=0;i<4;i++){
					if(0<=x+vx[i]&&x+vx[i]<=n+1&&0<=y+vy[i]&&y+vy[i]<=m+1){
						if(co[x+vx[i]][y+vy[i]]==-1){
							if(MA[x+vx[i]][y+vy[i]]=='.'){
								pX.push(x+vx[i]);
								pY.push(y+vy[i]);
								co[x+vx[i]][y+vy[i]]=co[x][y];
							}
							else{
								sX.push(x+vx[i]);
								sY.push(y+vy[i]);
								co[x+vx[i]][y+vy[i]]=co[x][y];
							}
						}
					}
				}
				
				sX.pop();
				sY.pop();
			}
		}
		cout<<co[0][0]<<endl;
	}
	
	
	
	
	
	
	
	
	
	return 0;
}
