from collections import deque

h, w = map(int, input().split())
S = [input() for _ in range(h)]
inf = float("inf")
ans = 0

for i in range(h):
  for j in range(w):
    if S[i][j] == "#":
      continue
    D = [[inf for _ in range(w)] for _ in range(h)]
    D[i][j] = 0
    que = deque([(i, j)])
    while que:
      si, sj = que.popleft()
      for ni, nj in [(si+1, sj), (si-1, sj), (si, sj+1), (si, sj-1)]:
        if 0 <= ni < h and 0 <= nj < w and S[ni][nj] != "#":
          if D[ni][nj] > D[si][sj]+1:
            D[ni][nj] = D[si][sj]+1
            ans = max(ans, D[si][sj]+1)
            que.append((ni, nj))
            
print(ans)
      