#include <iostream>
#include <queue>
using namespace std;
int n, m, maxim, i, j, D[102][102], xf, yf;
char a[102][102];
int dx[]={0, 1};
int dy[]={1, 0};
queue<int> cx, cy;

int main()
{
	cin>>n>>m;
	for(i=1; i<=n; i++)
	{
		for(j=1; j<=m; j++)
		{
			cin>>a[i][j];
			D[i][j]=18181818;
		}
	}
	if(a[1][1]=='&')
	{
		cout<<0;
		return 0;
	}
	cx.push(1);
	cy.push(1);
	D[1][1]=1;
	while(!cx.empty())
	{
		xf=cx.front(); cx.pop();
		yf=cy.front(); cy.pop();
		for(i=0; i<2; i++)
		{
			if(D[xf][yf]+1<D[xf+dx[i]][yf+dy[i]] && a[xf+dx[i]][yf+dy[i]]!='&')
			{
				D[xf+dx[i]][yf+dy[i]]=D[xf][yf]+1;
				cx.push(xf+dx[i]);
				cy.push(yf+dy[i]);
			}
		}
	}
	for(i=1; i<=n; i++)
	{
		for(j=1; j<=n; j++)
		{
			if(D[i][j]>maxim && D[i][j]!=18181818)
			{
				maxim=D[i][j];
			}
		}
	}
	cout<<maxim;
}