#include #include using namespace std; int n,m,i; bool viz[105][105]; char drum[105][105]; int coada[2][10005]; int val[105][105]; int ic,sf; inline int coadax() { int maxdrum=ic=sf=1; coada[0][1]=val[1][0]=1; coada[1][1]=0; while (ic<=sf) { int x=coada[0][ic],y=coada[1][ic]; viz[x][y]=1; while (drum[x+1][y]!='&' && !viz[x+1][y] && x+1<=n) { coada[0][++sf]=x+1; coada[1][sf]=y; viz[x+1][y]=1; val[x+1][y]=val[x][y]+1; if (val[x+1][y]>maxdrum) maxdrum=val[x+1][y]; } while (drum[x-1][y]!='&' && !viz[x-1][y] && x-1>0) { coada[0][++sf]=x-1; coada[1][sf]=y; viz[x-1][y]=1; val[x-1][y]=val[x][y]+1; if (val[x-1][y]>maxdrum) maxdrum=val[x-1][y]; } while (drum[x][y+1]!='&' && !viz[x][y+1] && y+1maxdrum) maxdrum=val[x][y+1]; } while (drum[x+1][y-1]!='&' && !viz[x][y-1] && y-1>=0) { coada[0][++sf]=x; coada[1][sf]=y-1; viz[x][y-1]=1; val[x][y-1]=val[x][y]+1; if (val[x][y-1]>maxdrum) maxdrum=val[x][y-1]; } ic++; } return maxdrum; } int main() { scanf("%d %d",&n,&m); for (i=1;i<=n;i++) scanf("%s",drum[i]); printf("%d",coadax()); return 0; }