#include<bits/stdc++.h>
using namespace std;
int main(){
  int h,w,i,j,k,ma,u,v,ans=0;
  cin>>h>>w;
  vector<string> s(h);
  vector<int> dh={-1,0,1,0},dw={0,-1,0,1};
  for(i=0;i<h;i++) cin>>s.at(i);
  for(i=0;i<h;i++){
    for(j=0;j<w;j++){
      if(s[i][j]=='#') continue;
      vector<vector<int>> cnt(h,vector<int>(w,-1));
      queue<pair<int,int>> q;
      cnt[i][j]=0;
      ma=0;
      q.push(make_pair(i,j));
      while(!q.empty()){
        u=q.front().first;
        v=q.front().second;
        q.pop();
        for(k=0;k<4;k++){
          if(0<=u+dh[k]&&u+dh[k]<h&&0<=v+dw[k]&&v+dw[k]<w&&s[u+dh[k]][v+dw[k]]=='.'&&cnt[u+dh[k]][v+dw[k]]==-1){
            cnt[u+dh[k]][v+dw[k]]=cnt[u][v]+1;
            ma=max(ma,cnt[u+dh[k]][v+dw[k]]);
            q.push(make_pair(u+dh[k],v+dw[k]));
          }
        }
      }
      ans=max(ans,ma);
    }
  }
  cout<<ans<<endl;
}