#include<bits/stdc++.h>
#define r(i,n) for(int i=0;i<n;i++)
using namespace std;
int dx[]={0,0,1,-1},dy[]={1,-1,0,0},w,h,t,d[101][101];
string s[101];
void dfs(int a,int b,char p){
  d[a][b]=t;
  r(i,4){
    int y=a+dy[i],x=b+dx[i];
    if(y>=0&&x>=0&&y<h&&x<w)
      if(d[y][x]==1e9&&s[y][x]==p)dfs(y,x,p);
  }
}
int main(){
  while(cin>>w>>h,w){
    r(i,h)r(j,w)d[i][j]=1e9;
    r(i,h)cin>>s[i];
    r(i,h)r(j,w)if(s[i][j]=='&'){
      s[i][j]='.';t=0;
      dfs(i,j,s[i][j]);
    }
    r(o,1000)r(i,h)r(j,w)if(d[i][j]!=1e9)r(k,4){
      int y=i+dy[k],x=j+dx[k];
      if(y<0||x<0||y>=h||x>=w)continue;
      if(s[i][j]==s[y][x])continue;
      if(s[i][j]=='.')t=d[i][j]+1;
      else t=d[i][j];
      if(d[y][x]>t)dfs(y,x,s[i][j]);
    }
    int ans=1e9;
    r(i,h)ans=min(ans,min(d[i][0],d[i][w-1]));
    r(i,w)ans=min(ans,min(d[0][i],d[h-1][i]));
    cout<<ans<<endl;
  }
}