#include<algorithm>
#include<iostream>
#include<string>
#include<cstdlib>
#include<cstring>
#include<cmath>
using namespace std;
int fn(int a[][100],int x,int y,int p,int w,int h){
  if(0){
  }else if(a[x][y]==-2){
    a[x][y]=p+1;
  }else if(a[x][y]==-1){
    if(x==0||x==w-1||y==0||y==h-1)
      return 1;
    a[x][y]=p;
    if(0||
       fn(a,x-1,y,p,w,h)||
       fn(a,x,y-1,p,w,h)||
       fn(a,x+1,y,p,w,h)||
       fn(a,x,y+1,p,w,h))
      return 1;
  }
  return 0;
}
int fm(int a[][100],int x,int y,int p,int w,int h){
  if(0){
  }else if(a[x][y]==-2){
    if(x==0||x==w-1||y==0||y==h-1)
      return 1;
    a[x][y]=p;
    if(0||
       fm(a,x-1,y,p,w,h)||
       fm(a,x,y-1,p,w,h)||
       fm(a,x+1,y,p,w,h)||
       fm(a,x,y+1,p,w,h))
      return 1;
  }
  return 0;
}
int main(){
  int i,j,k;
  int a[100][100],w,h;
  char c;
  while(cin>>w>>h&&w+h){
    for(i=0;i<h;i++){
      for(j=0;j<w;j++){
	cin>>c;
	if(0){
	}else if(c=='#'){
	  a[j][i]=-2;
	}else if(c=='.'){
	  a[j][i]=-1;
	}else if(c=='&'){
	  a[j][i]=0;
	}
      }
    }
    for(i=0;;){
      for(j=0;j<h;j++){
	for(k=0;k<w;k++){
	  if(a[k][j]==i){
	    if(k==0||k==w-1||j==0||j==h-1)
	      break;
	    if(0||
	       fn(a,k-1,j,i,w,h)||
	       fn(a,k,j-1,i,w,h)||
	       fn(a,k+1,j,i,w,h)||
	       fn(a,k,j+1,i,w,h))
	      break;
	  }
	}
	if(k!=w)
	  break;
      }
      if(j!=h)
	break;
      i++;
      for(j=0;j<h;j++){
	for(k=0;k<w;k++){
	  if(a[k][j]==i){
	    if(k==0||k==w-1||j==0||j==h-1)
	      break;
	    if(0||
	       fm(a,k-1,j,i,w,h)||
	       fm(a,k,j-1,i,w,h)||
	       fm(a,k+1,j,i,w,h)||
	       fm(a,k,j+1,i,w,h))
	      break;
	  }
	}
	if(k!=w)
	  break;
      }
      if(j!=h)
	break;
    }
    cout<<i<<endl;
  }
  return 0;
}