// inputに入力データ全体が入る
function Main(input) {
	// 1行目がinput[0], 2行目がinput[1], …に入る
	input = input.split("\n");
    var tmp = input[0].split(" ");
	//文字列から10進数に変換するときはparseIntを使います
  	var h = parseInt(tmp[0]);
  	var w = parseInt(tmp[1]);
  
  	input.splice(0, 1);
  	var maps = input.map((line) => {
      return line.split("");
    });
	
  	var count = 0;
  	while (maps.some(existsWhite)) {
      for (var i=0; i<h; i++) {
        for (var j=0; j<w; j++) {
          if (maps[i][j] === "#") {
            result = replaceTemporary(i, j, maps, h, w);
          }
        }
      }
      maps = maps.map((array) => {
        for (var k=0; k<array.length; k++) {
          if (array[k] === "b") array.splice(k, 1, "#");
        }
        return array;
      });
      count++;
    }
  
	//出力
	console.log(count);
}

const replaceTemporary = (i, j, maps, h, w) => {
  if (i > 0 && maps[i - 1][j] === ".") maps[i - 1].splice(j, 1, "b");
  if (j > 0 && maps[i][j - 1] === ".") maps[i].splice(j - 1, 1, "b");
  if (j < w - 1 && maps[i][j + 1] === ".") maps[i].splice(j + 1, 1, "b");
  if (i < h - 1 && maps[i + 1][j] === ".") maps[i + 1].splice(j, 1, "b");
  
  return maps;
}

const existsWhite = (array) => {
  return array.some(val => val === ".");
}

//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require("fs").readFileSync("/dev/stdin", "utf8"));