rt。
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,x,y) for(int i=x;i<=y;i++)
#define rrep(i,x,y) for(int i=x;i>=y;i--)
#define sc scanf
#define pr printf
inline int read(){int s=0,w=1;char c=getchar();while(!isdigit(c)){if(c=='-') w=-1;c=getchar();}while(isdigit(c)){s=(s<<1)+(s<<3)+(c^48);c=getchar();}return s*w;}
const int N=1e3+1;
int n,m,a[N][N];
string s;
const int fx[4]={-1,0,1,0},fy[4]={0,1,0,-1};
queue <pair <int,int> > q;
inline void init(){
rep(i,1,n)
rep(j,1,m)
if(a[i][j]!=0){
q.push(make_pair(i,j));
a[i][j]=0; // cout<<"hello\n";
}
}
inline void bfs(){
init();
while(!q.empty()){
int nowx=q.front().first,nowy=q.front().second;
q.pop();
rep(i,0,3){
int ax=nowx+fx[i],ay=nowy+fy[i];
if(ax<1||ax>n||ay<1||ay>m||a[ax][ay]==0x3f3f3f3f) continue;
q.push({ax,ay});
a[ax][ay]=a[nowx][nowy]+1;
}
}
}
inline void print(){
rep(i,1,n){rep(j,1,m)pr("%lld ",a[i][j]);pr("\n");}
}
signed main(){
memset(a,0x3f3f3f3f,sizeof a);
n=read();m=read();
rep(i,1,n){
cin>>s;
int len=m;
rep(j,0,len-1) a[i][j+1]=(s[j]-'0');
}
bfs();
print();
return 0;
}