#include <bits/stdc++.h>
using namespace std;

int dist[410][410];
string s[25];
const int inf = 1e4;

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	int h,w;
	cin >> h >> w;
	for(int i=0;i<h;i++)cin >> s[i];
	for(int i=0;i<h*w;i++){
		for(int j=0;j<h*w;j++){
			if(i==j)continue;
			dist[i][j] = inf;
		}
	}
	for(int i=0;i<h;i++){
		for(int j=0;j<w;j++){
			if(s[i][j]=='.'&&i+1<h&&s[i+1][j]=='.'){
				int t1 = i*w+j;
				int t2 = (i+1)*w+j;
				dist[t1][t2] = dist[t2][t1] = 1;
			}
			if(s[i][j]=='.'&&j+1<w&&s[i][j+1]=='.'){
				int t1 = i*w+j;
				int t2 = i*w+j+1;
				dist[t1][t2] = dist[t2][t1] = 1;
			}
		}
	}
	for(int k=0;k<h*w;k++){
		for(int i=0;i<h*w;i++){
			for(int j=0;j<h*w;j++){
				dist[i][j] = min(dist[i][j],dist[i][k]+dist[k][j]);
			}
		}
	}
	int ans = 0;
	for(int i=0;i<h*w;i++){
		for(int j=0;j<h*w;j++){
			if(dist[i][j]<inf){
				ans = max(ans,dist[i][j]);
			}
		}
	}
	cout << ans << "\n";
}
