#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define INF 1LL<<62
#define inf 1000000007

int main() {
	ll h,w;
	cin>>h>>w;
	char ch[22][22];
	for(ll i=0;i<h;i++){
		for(ll j=0;j<w;j++){
			cin>>ch[i][j];
		}
	}
	ll dx[4]={1,0,-1,0};
	ll dy[4]={0,1,0,-1};
	ll ans=0;
	for(ll i=0;i<h;i++){
		for(ll j=0;j<w;j++){
			if(ch[i][j]=='#'){
				continue;
			}
			queue<pair<ll,ll>>q;
			q.push(make_pair(i,j));
			ll cnt[22][22];
			for(ll i=0;i<h;i++){
				for(ll j=0;j<w;j++){
					cnt[i][j]=-1;
				}
			}
			cnt[i][j]=0;
			while(q.size()!=0){
				ll nowx=q.front().first;
				ll nowy=q.front().second;
				q.pop();
				for(ll i=0;i<4;i++){
					ll nexx=nowx+dx[i];
					ll nexy=nowy+dy[i];
					if(ch[nexx][nexy]=='#'||cnt[nexx][nexy]!=-1){
						continue;
					}
					cnt[nexx][nexy]=cnt[nowx][nowy]+1;
					ans=max(ans,cnt[nexx][nexy]);
					q.push(make_pair(nexx,nexy));
				}
			}
		}
	}
	cout <<ans;
	// your code goes here
	return 0;
}