output_description: Print the number of operations that will be performed.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      H W
      A_{11}A_{12}...A_{1W}
      :
      A_{H1}A_{H2}...A_{HW}
attempt: r, c = map(int, input().split())
  
  cc = [input() for i in range(r)]
  
  from collections import deque
  
  
  # 縦がｙ 横がx　だから座標はy,xて書く
  st = []
  for i in range(r):
      for j in range(c):
          if cc[i][j] == "#":
              st.append([i, j])
  
  # 保留スタックtodoにスタートの位置情報を入れる
  todo = deque(st)
  # 検知済みリストseenを-1で初期化 (何も検知してないてこと)
  seen = [[-1 for i in range(c)] for j in range(r)]
  
  # seenにはどんだけの手数でそこに到達できるかを入れる
  # 例えばスタート地点は手数0でいけるから0を入れる
  for i in range(len(st)):
      seen[st[i][0]][st[i][1]] = 0
  
  # 4方向の移動リスト これ使って移動していく
  ido = [[1, 0], [0, 1], [-1, 0], [0, -1]]
  
  # 保留リストtodoが空になるまでやる
  while todo:
      y, x = todo.popleft()  # 現在地は保留からの先頭とりだす
      for i in range(4):  # 現在地から4方向を見る
          ny, nx = y + ido[i][0], x + ido[i][1]  # 現在地から隣の座標
          # 隣の座標が区画をはみ出さないかつ、検知してないときに
          if 0 <= ny < r and 0 <= nx < c and seen[ny][nx] == -1 and cc[ny][nx] != "#":
              # 隣に行けるということなので検知してその手数を格納
              seen[ny][nx] = seen[y][x] + 1  # 手数＝前の地点の手数+1
              todo.append([ny, nx])  # 保留リストにも入れとく
  
  print(max(seen))
  
problem_description: Statement
  
  You are given a grid of squares with H horizontal rows and W vertical columns,
  where each square is painted white or black. HW characters from A_{11} to
  A_{HW} represent the colors of the squares. A_{ij} is `#` if the square at the
  i-th row from the top and the j-th column from the left is black, and A_{ij}
  is `.` if that square is white.
  
  We will repeatedly perform the following operation until all the squares are
  black:
  
    * Every white square that shares a side with a black square, becomes black.
  
  Find the number of operations that will be performed. The initial grid has at
  least one black square.
samples: [{"input": "3 3\n    ...\n    .#.\n    ...", "output": "2\n    \n\nAfter one operation, all but the corners of the grid will be black. After one\nmore operation, all the squares will be black.\n\n* * *"}, {"input": "6 6\n    ..#..#\n    ......\n    #..#..\n    ......\n    .#....\n    ....#.", "output": "3"}]