bfs
#include<bits/stdc++.h>
using namespace std;
char a[200][200];
int ans[200][200];
bool vis[200][200];
queue<int> x,y;
int p1[4]={0,0,1,-1},p2[4]={1,-1,0,0};
int m,n;
void bfs(int x1,int y1,int x2,int y2){
//printf("%d %d %d %d\n",x1,y1,x2,y2);
if(a[x1][y1]!='1')
if(ans[x1][y1]==-1)
ans[x1][y1]=abs(x1-x2)+abs(y1-y2);
else
ans[x1][y1]=min(ans[x1][y1],abs(x1-x2)+abs(y1-y2));
for(int i=0;i<=3;i++){
if(!vis[x1+p1[i]][y1+p2[i]]&&x1+p1[i]>=1&&x1+p1[i]<=n&&y1+p2[i]>=1&&y1+p2[i]<=m){
vis[x1+p1[i]][y1+p2[i]]=1;
x.push(x1+p1[i]);
y.push(y1+p2[i]);
}
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
ans[i][j]=-1;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]=='1'){
for(int k1=1;k1<=n;k1++){
for(int k2=1;k2<=m;k2++){
vis[k1][k2]=0;
}
}
x.push(i);
y.push(j);
while(!x.empty()){
bfs(x.front(),y.front(),i,j);
x.pop();
y.pop();
}
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]=='1')
printf("0 ");
else
printf("%d ",ans[i][j]);
}
printf("\n");
}
return 0;
}