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

int dist[400][400];

int main(){
	int H,W;
	cin >> H >> W;
	vector<string> A(H);
	for(auto &i:A)cin >> i;
	
	for(int i=0;i<H*W;i++)for(int j=0;j<H*W;j++){
		if(i==j)dist[i][j]=0;
		else dist[i][j]=444;
	}
	
	for(int i=0;i<H;i++)for(int j=0;j<W;j++){
		int x=i*W+j;
		int y=x+1;
		int z=x+W;
		if(j<W-1 && A[i][j]=='.' && A[i][j+1]=='.')dist[x][y]=dist[y][x]=1;
		if(i<H-1 && A[i][j]=='.' && A[i+1][j]=='.')dist[x][z]=dist[z][x]=1;
	}
	
	for(int i=0;i<H*W;i++)for(int j=0;j<H*W;j++)for(int k=0;k<H*W;k++){
		dist[j][k]=min(dist[j][k],dist[j][i]+dist[i][k]);
	}
	
	int ans=0;
	for(int i=0;i<H*W;i++)for(int j=0;j<H*W;j++)if(dist[i][j]<444)ans=max(ans,dist[i][j]);
	cout << ans << endl;
	return 0;
}