#include <iostream>
using namespace std;
typedef struct pozitie {int l,c,v;} POZITIE;
int n,m,i,j,rez;
int prim,ultim;
char A[100][100];
int VIZ[100][100];
POZITIE Q[1000],poz;
int lnou,cnou;
int main()
{
	cin>>n>>m;
	for (i=0;i<n;i++)
		for (j=0;j<n;j++)
			cin>>A[i][j];
	rez=1;
	prim=ultim=0;
	poz.l=0;
	poz.c=0;
	poz.v=1;
	Q[0]=poz;
	VIZ[0][0]=1;
	while (prim<=ultim)
	{
		lnou=Q[prim].l+1;
		cnou=Q[prim].c;
		if (lnou<n && VIZ[lnou][cnou]==0 && A[lnou][cnou]=='.')
		{
			poz.l=lnou;
			poz.c=cnou;
			poz.v=1+Q[prim].v;
			if (rez<poz.v)
				rez=poz.v;
			VIZ[lnou][cnou]=1;
			Q[++ultim]=poz;
		}
		lnou=Q[prim].l;
		cnou=Q[prim].c+1;
		if (lnou<n && VIZ[lnou][cnou]==0 && A[lnou][cnou]=='.')
		{
			poz.l=lnou;
			poz.c=cnou;
			poz.v=1+Q[prim].v;
			if (rez<poz.v)
				rez=poz.v;
			VIZ[lnou][cnou]=1;
			Q[++ultim]=poz;
		}
		prim++;
	}
	cout<<rez;
	return 0;
}