h,w = map(int,input().split())
ls = [input() for _ in range(h)]
from collections import deque
a = 0
for i in range(h):
  for j in range(w):
    if ls[i][j]=='#': continue
    d = [[-1]*w for _ in range(h)]
    d[i][j] = 0
    q = deque([(i,j)])
    while q:
      x,y = q.popleft()
      for dx,dy in ((1,0),(0,1),(-1,0),(0,-1)):
        nx,ny = x+dx,y+dy
        if not (0<=nx<h and 0<=ny<w): continue
        if ls[nx][ny]=='.' and d[nx][ny]==-1:
          d[nx][ny] = d[x][y]+1
          q.append((nx,ny))
    a = max(a,max(max(j for j in i) for i in d))
print(a)