from collections import deque



h, w = list(map(int, input().split()))

a = ['#' * (w + 2)] * 2

a[1: 1] = ('#' + eval(input()) +  '#' for _ in range(h))

r = 0

for i in range(1, h + 1):

  for j in range(1, w + 1):

    if a[i][j] == '.':

      b = list(map(list, a))

      q = deque()

      b[i][j] = 0

      q.append((i, j))

      while(q):

        i, j = q.popleft()

        r = max(r, b[i][j])

        d = 0

        for i1 in range(i - 1, i + 2):

          for j1 in range(j - d, j + 2, 2):                

            if b[i1][j1] == '.':

              b[i1][j1] = b[i][j] + 1

              q.append((i1, j1))

          d ^= 1

print(r)

from collections import deque



h, w = list(map(int, input().split()))

a = ['#' * (w + 2)] * 2

a[1: 1] = ['#' + eval(input()) +  '#' for _ in range(h)]

r = 0

for i in range(1, h + 1):

  for j in range(1, w + 1):

    if a[i][j] == '.':

      b = list(map(list, a))

      q = deque()

      b[i][j] = 0

      q.append((i, j))

      while(q):

        i, j = q.popleft()

        r = max(r, b[i][j])

        d = 0

        for i1 in range(i - 1, i + 2):

          for j1 in range(j - d, j + 2, 2):                

            if b[i1][j1] == '.':

              b[i1][j1] = b[i][j] + 1

              q.append((i1, j1))

          d ^= 1

print(r)

from collections import deque

h, w = list(map(int, input().split()))
a = ["#" * (w + 2)] * 2
a[1:1] = ("#" + eval(input()) + "#" for _ in range(h))
r = 0
for i in range(1, h + 1):
    for j in range(1, w + 1):
        if a[i][j] == ".":
            b = list(map(list, a))
            q = deque()
            b[i][j] = 0
            q.append((i, j))
            while q:
                i, j = q.popleft()
                r = max(r, b[i][j])
                d = 0
                for i1 in range(i - 1, i + 2):
                    for j1 in range(j - d, j + 2, 2):
                        if b[i1][j1] == ".":
                            b[i1][j1] = b[i][j] + 1
                            q.append((i1, j1))
                    d ^= 1
print(r)

from collections import deque

h, w = list(map(int, input().split()))
a = ["#" * (w + 2)] * 2
a[1:1] = ["#" + eval(input()) + "#" for _ in range(h)]
r = 0
for i in range(1, h + 1):
    for j in range(1, w + 1):
        if a[i][j] == ".":
            b = list(map(list, a))
            q = deque()
            b[i][j] = 0
            q.append((i, j))
            while q:
                i, j = q.popleft()
                r = max(r, b[i][j])
                d = 0
                for i1 in range(i - 1, i + 2):
                    for j1 in range(j - d, j + 2, 2):
                        if b[i1][j1] == ".":
                            b[i1][j1] = b[i][j] + 1
                            q.append((i1, j1))
                    d ^= 1
print(r)

-a[1:1] = ("#" + eval(input()) + "#" for _ in range(h)) +a[1:1] = ["#" + eval(input()) + "#" for _ in range(h)]