/*
	In the name of ALLAH
	Author : Raashid Anwar
*/

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

#define int int64_t
#define mod 1000000007


int power(int a,int b) {
	int r=1;
	while(b) {
		if(b&1)
			r=(r*a)%mod;
		a=(a*a)%mod;
		b>>=1;
	}
	return r;
}

int dp[20][20][20][20];
int n,m;
string s[20];

void bfs(int x,int y,int i,int j,int d) {
	if(i<0||j<0||i>=n||j>=m)
		return ;
	if(s[i][j]=='#')
		return ;
	if(dp[x][y][i][j]!=-1&&dp[x][y][i][j]<=d)
		return ;
	dp[x][y][i][j]=d;
	bfs(x,y,i-1,j,d+1);
	bfs(x,y,i+1,j,d+1);
	bfs(x,y,i,j-1,d+1);
	bfs(x,y,i,j+1,d+1);
}

int32_t main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	int ans=0;
	cin>>n>>m;
	for(int i=0;i<n;i++) {
		cin>>s[i];
	}
	memset(dp,-1,sizeof(dp));
	for(int i=0;i<n;i++) {
		for(int j=0;j<m;j++) {
			bfs(i,j,i,j,0);
		}
	}
	for(int i=0;i<n;i++) {
		for(int j=0;j<m;j++) {
			for(int x=0;x<n;x++) {
				for(int y=0;y<m;y++) {
						ans=max(ans,dp[i][j][x][y]);
				}
			}
		}
	}
	cout<<ans<<"\n";
}
