h, w = gets.split.map(&:to_i)
que = []
ary = w.times.map { gets.chomp.chars.map { |g| g == '#' ? 0 : -1 } }
h.times { |i| w.times { |j| que << [j, i] if ary[i][j] == 0 } }
ans = 0

until que.empty?
  x, y = que.shift

  ans = ary[y][x] + 1

  que << [x-1, y] if x - 1 >= 0 && ary[y][x-1] < 0 && ary[y][x-1] = ans
  que << [x+1, y] if x + 1 < w  && ary[y][x+1] < 0 && ary[y][x+1] = ans
  que << [x, y-1] if y - 1 >= 0 && ary[y-1][x] < 0 && ary[y-1][x] = ans
  que << [x, y+1] if y + 1 < h  && ary[y+1][x] < 0 && ary[y+1][x] = ans
end

puts ans - 1