#include <cstdio>
#include <algorithm>
#include <queue>

using namespace std;
int a[101][101],N,M;
queue<pair<int,int> > Q;


void sari(int i,int j,int k)
{
    if(i >= 1 && i <= N && j >= 1 && j <= M && a[i][j] != -1) /// we r in matrix
    {
         if(a[i][j] < k)
         {
             a[i][j] = k;
             Q.push(make_pair(i,j));
         }
    }
}

void Fill(int i,int j)
{
    Q.push(make_pair(i,j));
    a[i][j] = 1;
    int k;
    while(!Q.empty())
    {
        i = Q.front().first;
        j = Q.front().second;
        k = a[i][j];
        Q.pop();
        sari(i,j+1,k+1);
        sari(i+1,j,k+1);
    }
}

int main()
{
    //freopen("run.in","r",stdin);
    //freopen("run.out","w",stdout);


    char c;
    scanf("%d%d\n",&N,&M);
    for(int i = 1; i <= N; ++i)
    {
        for(int j = 1;j <= M; ++j)
        {
            c = fgetc(stdin);
            if(c == '&')
                a[i][j] = -1;
        }
        c = fgetc(stdin);/// biec sleashu
    }

    Fill(1,1);
    int best = -1;

    for(int i = 1; i <= N; ++i)
    {
        for(int j = 1;j <= M; ++j)
        {
           // printf("%d ",a[i][j]);
            best = max (best , a[i][j]);
        }
        //printf(" \n");
    }
    printf("%d",best);

    return 0;
}