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: # -*- coding: utf-8 -*-
  import sys
  import os
  import copy
  from math import *
  
  nums = []
  for i in list(input().split()):
    nums.append(int(i))
  
  #print(nums)
  
  fields = []
  for i in range(nums[0]):
  	n = []
  	words = list(input())
  	for j in range(nums[1]):
  		if words[j] == '#':
  			n.append(3)
  		else:
  			n.append(0)
  	fields.append(n)
  
  #print(fields)
  
  for i in range(nums[0]):
  		for j in range(nums[1]):
  			check_list = [i, j]
  
  count = 3
  # -*- coding: utf-8 -*-
  import sys
  import os
  import copy
  from math import *
  
  nums = []
  for i in list(input().split()):
    nums.append(int(i))
  
  #print(nums)
  
  fields = []
  for i in range(nums[0]):
  	n = []
  	words = list(input())
  	for j in range(nums[1]):
  		if words[j] == '#':
  			n.append(3)
  		else:
  			n.append(0)
  	fields.append(n)
  
  #print(fields)
  
  check_list = []
  for i in range(nums[0]):
  		for j in range(nums[1]):
  			check_list.append([i, j])
  
  count = 3
  while True:
  	check_list_next = []
  
  	for mass in check_list:
  		i = mass[0]
  		j = mass[1]
  		
  		if fields[i][j] == count:
  			if 0 < i:
  				if fields[i-1][j] == 0:
  					fields[i-1][j] = count + 1
  					check_list_next.append([i-1, j])
  
  			if i < nums[0]-1:
  				if fields[i+1][j] == 0:
  					fields[i+1][j] = count + 1
  					check_list_next.append([i+1, j])
  
  			if 0 < j:
  				if fields[i][j-1] == 0:
  					fields[i][j-1] = count + 1
  					check_list_next.append([i, j-1])
  
  			if j < nums[1]-1:
  				if fields[i][j+1] == 0:
  					fields[i][j+1] = count + 1
  					check_list_next.append([i, j+1])
  
  	check_list = check_list_next
  
  	#for i in range(nums[0]):
  	#	print(fields[i])
  	#print("")
  
  	#print(check_list)
  
  	if len(check_list):
  		count = count + 1
  	else:
  		break
  
  print(count-3)
  	changed = 0
  	for i in range(nums[0]):
  		for j in range(nums[1]):
  			if fields[i][j] == count:
  				if 0 < i:
  					if fields[i-1][j] == 0:
  						fields[i-1][j] = count + 1
  						changed = 1
  
  				if i < nums[0]-1:
  					if fields[i+1][j] == 0:
  						fields[i+1][j] = count + 1
  						changed = 1
  
  				if 0 < j:
  					if fields[i][j-1] == 0:
  						fields[i][j-1] = count + 1
  						changed = 1
  
  				if j < nums[1]-1:
  					if fields[i][j+1] == 0:
  						fields[i][j+1] = count + 1
  						changed = 1
  
  	#for i in range(nums[0]):
  	#	print(fields[i])
  	#print("")
  
  	if changed:
  		count = count + 1
  	else:
  		break
  
  print(count-3)
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"}]