#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n,m,i,j,k,x,y,nx,ny,qx[405],qy[405],bg,ed,f[10][5]={{-1,0},{1,0},{0,-1},{0,1}},dis[25][25],ans;
char s[25][25];
bool v[25][25];
int main()
{
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;++i)
		scanf("%s",s[i]+1);
	for(i=1;i<=n;++i)
		for(j=1;j<=m;++j)
			if(s[i][j]=='.')
			{
				for(x=1;x<=n;++x)
					for(y=1;y<=m;++y)
						v[x][y]=false;
				bg=ed=1;
				qx[1]=i,qy[1]=j,dis[i][j]=0;
				v[i][j]=true;
				while(bg<=ed)
				{
					for(k=0;k<4;++k)
					{
						nx=qx[bg]+f[k][0],ny=qy[bg]+f[k][1];
						if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&s[nx][ny]=='.'&&!v[nx][ny])
						{
							++ed;
							qx[ed]=nx,qy[ed]=ny;
							v[nx][ny]=true;
							dis[nx][ny]=dis[qx[bg]][qy[bg]]+1;
						}
					}
					++bg;
				}
				for(x=1;x<=n;++x)
					for(y=1;y<=m;++y)
						if(v[x][y])
							ans=max(ans,dis[x][y]);
			}
	printf("%d",ans);
	return 0;
}
