#include<bits/stdc++.h>
#define int long long
#define rep(i,n) for(int i=0;i<n;i++)
#define elif else if
#define INF 1000000007
using namespace std;
int a,xa,ya,b,xb,yb,h,w,xc,yc,cnt=0,xy[110][110]={-1},sx=-1,sy=-1,dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};
string s,t;
pair<int,int> p;
char c[110][110];
queue<pair<int,int>> que;
int bfs(int x,int y){
	rep(i,h){
		rep(j,w){
			xy[i][j]=-1;
		}
	}
	que.push(pair<int,int>(x,y));
	xy[x][y]=0;
	while(que.size()){
		p=que.front();
		que.pop();
		rep(i,4){
			int nx=p.first+dx[i];
			int ny=p.second+dy[i];
			if(0<=nx&&nx<h&&0<=ny&&ny<w&&c[nx][ny]!='#'&&xy[nx][ny]==-1){
				que.push(pair<int,int>(nx,ny));
				xy[nx][ny]=xy[p.first][p.second]+1;
			}
		}
	}
	return xy[p.first][p.second];
}
signed main()
{
	cin>>h>>w;
	rep(i,h){
		rep(j,w){
			cin>>c[i][j];
		}
	}
	rep(i,h){
		rep(j,w){
			if(c[i][j]=='.'){
				cnt=max(cnt,bfs(i,j));
			}
		}
	}
	cout<<cnt;
}