import sys
input = sys.stdin.readline
from collections import deque
 
 
def main():
    H, W = [int(x) for x in input().split()]
    A = [["" for i in range(W)] for j in range(H)]
 
    for j in range(H):
        S = input().strip()
        for i, s in enumerate(list(S)):
            A[j][i] = s
 
 
    ma = 0
 
    dj = [1, 0, -1, 0]
    di = [0, 1, 0, -1]
 
    for sj in range(H):
        for si in range(W):
            for gj in range(H):
                for gi in range(W):
                    d = [[-1] * W for i in range(H)]
                    q = deque([])
                    q.append((sj, si))
                    d[sj][si] = 0
 
                    while q:
                        p = q.popleft()
                        if p[0] == gj and p[1] == gi:
                            break
                        for i in range(4):
                            nj = p[0] + dj[i]
                            ni = p[1] + di[i]
 
                            if 0 <= nj < H and 0 <= ni < W and A[nj][ni] != "#" and d[nj][ni] == -1:
                                q.append((nj, ni))
                                d[nj][ni] = d[p[0]][p[1]] + 1
 
                    ma = max(ma, d[gj][gi])
 
 
 
    print(ma)
 
 
 
 
 
    
 
 
if __name__ == '__main__':
    main()