#include <bits/stdc++.h>

#define F first 
#define S second

using namespace std;

typedef long long LL;
typedef pair<int, int> PII;

const int N = 110, M = 10010;

int n, m, res;
int d[N][N];
PII q[M];
char g[N][N];

int dx[4] = {0, 0, 1, -1};
int dy[4] = {1, -1, 0, 0};

void bfs(int x, int y)
{
	memset(d, -1, sizeof d);
	
	int hh = 0, tt = -1;
	q[ ++ tt] = {x, y};
	d[x][y] = 0;
	
	while (hh <= tt)
	{
		auto t = q[hh ++ ];
		
		for (int i = 0; i < 4; i ++ )
		{
			int tx = t.F + dx[i];
			int ty = t.S + dy[i];
			
			if (tx < 0 || tx >= n || ty < 0 || ty >= m) continue;
			if (d[tx][ty] != -1 || g[tx][ty] != '.') continue;
			
			int td = d[t.F][t.S] + 1;
			res = max(res, td);
			d[tx][ty] = td;
			q[ ++ tt] = {tx, ty};
		}
	}
}

int main()
{
	cin >> n >> m;
	for (int i = 0; i < n; i ++ ) cin >> g[i];
	for (int i = 0; i < n; i ++ )
		for (int j = 0; j < m; j ++ )
			if (g[i][j] == '.')
				bfs(i, j);
				
	cout << res << endl;
    return 0;
}