#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll INF=(ll)1e9;
const ll MOD=(ll)1e9+7;
vector<int> dx={1,0,-1,0},dy={0,1,0,-1};

int main(){
  int H,W,m=0;
  cin>>H>>W;
  int a[H][W];
  char s[H][W];
  for(int i=0;i<H;i++){
    for(int j=0;j<W;j++){
      cin>>s[i][j];
      a[i][j]=(int)1e4;
    }
  }
  for(int i=0;i<H;i++){
    for(int j=0;j<W;j++){
      if(s[i][j]=='.'){
        queue<pair<int,int>> q;
        q.push(pair<int,int>(i,j));
        a[i][j]=0;
        while(q.size()){
          pair<int,int> p=q.front();
          q.pop();
          for(int k=0;k<4;k++){
            int nx=p.second+dx[k],ny=p.first+dy[k];
            if(0<=nx&&nx<W&&0<=ny&&ny<H&&a[ny][nx]==(int)1e4&&s[ny][nx]=='.'){
              q.push(pair<int,int>(ny,nx));
              a[ny][nx]=a[p.first][p.second]+1;
              m=max(m,a[ny][nx]);
            }
          }
        }
        for(int y=0;y<H;y++){
          for(int x=0;x<W;x++) a[y][x]=(int)1e4;
        }
      }
    }
  }
  cout<<m<<endl;
}
