from collections import deque

h, w = map(int, input().split())
s = [input() for i in range(h)]

def solve(sh, sw):
    visited = [[-1]*w for i in range(h)]
    visited[sh][sw] = 0
    q = deque([(sh, sw)])
    max_ = 0
    while q:
        i, j = q.popleft()
        for ni, nj in [(i+1, j), (i-1, j), (i, j+1), (i, j-1)]:
            if not(0 <= ni < h and 0 <= nj < w):
                continue
            if s[ni][nj] == "#":
                continue
            if visited[ni][nj] >= 0:
                continue
            visited[ni][nj] = visited[i][j] + 1
            max_ = max(max_, visited[ni][nj])
            q.append((ni, nj))
    return max_

ans = 0
for sh in range(h):
    for sw in range(w):
        ans = max(ans, solve(sh, sw))
print(ans)