#include <bits/stdc++.h>
using namespace std;

int n, m, ans[1009][1009], temp;
char x;
bool a[1009][1009];

int bfs(int x, int y, int temp)
{
	temp++;
	if(x > 0)
	{
		if(ans[x-1][y] > temp)
		{
			ans[x-1][y] = temp;
			bfs(x-1, y, temp);
		}
	}
	if(x < n-1)
	{
		if(ans[x+1][y] > temp)
		{
			ans[x+1][y] = temp;
			bfs(x+1, y, temp);
		}
	}
	if(y > 0)
	{
		if(ans[x][y-1] > temp)
		{
			ans[x][y-1] = temp;
			bfs(x, y-1, temp);
		}
	}
	if(y < m-1)
	{
		if(ans[x][y+1] > temp)
		{
			ans[x][y+1] = temp;
			bfs(x, y+1, temp);
		}
	}
}

int main()
{
	cin >> n >> m;
	for(int i = 0; i < n; i++)
	{
		for(int j = 0; j < m; j++)
		{
			cin >> x;
			if(x == '#')
			{
				a[i][j] = 1;
				ans[i][j] = 0;
			}else{
				a[i][j] = 0;
				ans[i][j] = INT_MAX;
			}
		}
	}
	for(int i = 0; i < n; i++)
	{
		for(int j = 0; j < m; j++)
		{
			if(a[i][j])
			{
				bfs(i, j, 0);
			}
		}
	}
	for(int i = 0; i < n; i++)
	{
		for(int j = 0; j < m; j++)
		{
			temp = max(temp, ans[i][j]);
		}
	}
	cout << temp;
}