#include<iostream>
using namespace std;
int a[101][101], n, m, dx[]={+1,0}, dy[]={0,1}, maxi;
struct{int x, y;}c[10000];
char ca;
int interior(int x, int y)
{
    if(x<=n&&x>=1&&y<=m&&y>=1)return 1;
    return 0;
}
void citire()
{
    cin>>n>>m;
    int i, j;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            cin>>ca;
            if(ca=='&')a[i][j]=-1;
        }
    }
}
void lee(int x, int y)
{
    int i, j, p, u, xv, yv;
    p=u=1;
    c[p].x=x;
    c[p].y=y;
    a[x][y]=1;
    while(p<=u)
    {
        x=c[p].x;
        y=c[p++].y;
        for(i=0;i<=1;i++)
        {
            xv=x+dx[i];
            yv=y+dy[i];
            if(interior(xv,yv)&&a[xv][yv]==0)
            {
                c[++u].x=xv;
                c[u].y=yv;
                a[xv][yv]=a[x][y]+1;
                if(a[xv][yv]>maxi)maxi=a[xv][yv];
            }
        }
    }
}
int main()
{
    citire();
    lee(1,1);
    cout<<maxi;
    return 0;
}