import collections H,W = map(int,input().split()) lsHW = ['.'*(W+2)]+['.'+input()+'.' for i in range(H)]+['.'*(W+2)] H += 2 W += 2 INF = 5000 cost = [[INF]*(W) for i in range(H)] used = [[False]*(W) for i in range(H)] dxy = [(0,1),(1,0),(-1,0),(0,-1),(1,1),(-1,1),(1,-1),(-1,-1)] d = collections.deque() for i in range(H): for j in range(W): if lsHW[i][j] == '.': cost[i][j] = 0 d.append((i,j)) while d: x,y = d.popleft() if used[x][y]: continue used[x][y] = True for dx,dy in dxy: if 0<=x+dx= cost[x][y] + 1: cost[x+dx][y+dy] = cost[x][y] + 1 d.append((x+dx,y+dy)) cmax = 0 for i in range(H): for j in range(W): cmax = max(cmax,cost[i][j]) print(cmax)