#include <iostream>
using namespace std;
int n, m, maxim, i, j;
bool viz[102][102];
char a[102][102];
int dx[]={0, 1};
int dy[]={1, 0};
void dfs(int x, int y, int p)
{
	if(p>maxim)
		maxim=p;
	for(i=0; i<2; i++)
	{
		if(x+dx[i]<=n && x+dx[i]>=1 && y+dy[i]<=m && y+dy[i]>=1 && a[x+dx[i]][y+dy[i]]=='.' && !viz[x+dx[i]][y+dy[i]])
		{
			viz[x+dx[i]][y+dy[i]]=1;
			dfs(x+dx[i], y+dy[i], p+1);
			viz[x+dx[i]][y+dy[i]]=0;
		}
	}
}

int main()
{
	cin>>n>>m;
	for(i=1; i<=n; i++)
	{
		for(j=1; j<=m; j++)
		{
			cin>>a[i][j];
		}
	}
	if(a[1][1]=='&')
	{
		cout<<0;
		return 0;
	}
	dfs(1, 1, 1);
	cout<<maxim;
}