#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<(n);i++)
using namespace std;
typedef long long ll;
typedef pair <int,int> P;

int main(){
  int h,w;
  cin>>h>>w;
  char s[25][25];
  rep(i,h) rep(j,w) cin>>s[i][j];
  int dx[4] = {1,0,-1,0};
  int dy[4] = {0,1,0,-1};
  int ans=0;
  rep(si,h) rep(sj,w){
    if(s[si][sj]=='#') continue;
    int d[25][25];
    rep(i,h) rep(j,w) d[i][j]=-1;
    d[si][sj]=0;
    queue<P> q;
    q.push({si,sj});
    while(q.size()){
      int x,y;
      tie(x,y)=q.front();
      q.pop();
      rep(i,4){
	int nx=x+dx[i],ny=y+dy[i];
	if(nx>=h||ny>=w||nx<0||ny<0) continue;
	if(s[nx][ny]=='.'&&d[nx][ny]==-1){
	  d[nx][ny]=d[x][y]+1;
	  ans=max(ans,d[nx][ny]);
	  q.push({nx,ny});
	}
      }
    }
  }
  cout<<ans<<endl;
  return 0;
}