#include using namespace std; int n,m,ans,dis[3010][3010]; string mp[3010]; queue >q; const int dx[9]={-1,-1,-1,0,0,0,1,1,1},dy[9]={-1,0,1,-1,0,1,-1,0,1}; int main() { cin>>n>>m; memset(dis,0x3f,sizeof dis); for(int i=0;i<=m+1;++i)mp[0]+='.',mp[n+1]+='.'; for(int i=1;i<=n;++i)cin>>mp[i],mp[i]='.'+mp[i]+'.'; for(int i=0;i<=n+1;++i) for(int j=0;j<=m+1;++j) if(mp[i][j]=='.')dis[i][j]=0,q.push({i,j}); while(!q.empty()) { int x=q.front().first,y=q.front().second; q.pop(); for(int i=0;i<=8;++i) { int xx=x+dx[i],yy=y+dy[i]; if(xx<0||xx>n+1||yy<0||yy>m+1)continue; if(dis[xx][yy]>dis[x][y]+1) { dis[xx][yy]=dis[x][y]+1; ans=max(ans,dis[xx][yy]); q.push({xx,yy}); } } } cout<