#include <iostream>
#include <stdio.h>
#include <stack>

using namespace std;

struct da{ int x,y; };

int main() {
	int x,y,i,j,c,f1,dx[4]={-1,0,1,0},dy[4]={0,-1,0,1};
	char d[101][101],g[2]={'.','#'};
	da a,b;
	stack<da> st[2];
 while(cin >> x >> y) {
	 if (x==0) break;
     for (i=0;i<y;i++) cin >> d[i];
	 c=0; f1=0;
	 for (i=0;i<y;i++) for (j=0;j<x;j++) if (d[i][j]=='&') {a.x=j; a.y=i; st[0].push(a);}
	 while(f1==0) {
	 while(!st[c % 2].empty()) {
		 a=st[c % 2].top(); st[c % 2].pop();
		 if (a.x==0 || a.x==x-1 || a.y==0 || a.y==y-1) { f1=1; continue;}
		 for (i=0;i<4;i++) {
			 b.x=a.x+dx[i]; b.y=a.y+dy[i];
			 if (d[b.y][b.x]==g[c % 2]) { st[c % 2].push(b); d[b.y][a.x]='&';}
			 if (d[b.y][b.x]==g[(c+1) % 2]) { st[(c+1) % 2].push(b); d[b.y][a.x]='&';}
		 }
	 }
	 c++;
	 }
	 while(!st[c % 2].empty()) st[c % 2].pop();
	 cout << c/2 << endl;
 }
 return 0;
 }