from time import time st = time() H,W = map(int,input().split()) S = [input() for _ in range(H)] INF = 3000 D = [[INF] * W for _ in range(H)] S0 = set() S1 = set() Q = [] dir = [] for i in range(-1,2): for j in range(-1,2): if i == 0 and j == 0: continue dir.append((i,j)) def fill(hw): x = hw // W y = hw % W for dx, dy in dir: x2 = x + dx y2 = y + dy if 0 <= x2 < H and 0 <= y2 < W: if D[x2][y2] > D[x][y] + 1: D[x2][y2] = D[x][y] + 1 S1.add(x2 * W + y2) for x in range(H): for y in range(W): if S[x][y] == ".": D[x][y] = 0 S0.add(x * W + y) x = 0 for y in range(W): if D[x][y] == INF: D[x][y] = 1 S1.add(x * W + y) x = H - 1 for y in range(W): if D[x][y] == INF: D[x][y] = 1 S1.add(x * W + y) y = 0 for x in range(H): if D[x][y] == INF: D[x][y] = 1 S1.add(x * W + y) y = W - 1 for x in range(H): if D[x][y] == INF: D[x][y] = 1 S1.add(x * W + y) while S0: while S0: fill(S0.pop()) S0,S1 = S1,S0 ans = 0 for h in range(H): for w in range(W): ans = max(ans,D[h][w]) print(ans)