#include<bits/stdc++.h>
using namespace std;
#define MAX 32000
char str[200] ;
typedef struct ll
{
int horz;
int vert;
}moves;
moves move1[4];
int arr[210][210];
int visited[210][210];
int dist[210][210];
int n,m;
queue< pair<int,int> > q;
void init()
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(arr[i][j])
{
dist[i][j]=0;
}
else
dist[i][j]=MAX;
}
}
}
void bfs()
{
int i,j,k,x,y;
pair<int,int> p,temp;
while(!q.empty())
{
p=q.front();
q.pop();
for(i=0;i<4;i++)
{
x=p.first+move1[i].horz;
y=p.second+move1[i].vert;
if(x>=0&&x<n&&y>=0&&y<m&&!visited[x][y])
{
visited[x][y]=1;
dist[x][y]=dist[p.first][p.second]+1;
temp.first=x;
temp.second=y;
q.push(temp);
}
}
}
}
int main()
{
int test,i,j,k,num;
pair<int,int> p;
move1[0].horz=0;
move1[0].vert=-1;
move1[1].horz=0;
move1[1].vert=1;
move1[2].horz=-1;
move1[2].vert=0;
move1[3].horz=1;
move1[3].vert=0;
cin>>test;
// scanf("%lld",&test);
for(i=0;i<test;i++)
{
cin>>n;
cin>>m;
// scanf("%lld",&n);
//scanf("%lld",&m);
for(j=0;j<n;j++)
{
scanf("%s",str) ;
for(int k=0;k<m;k++)
{
arr[j][k]=str[k]-'0';
if(arr[j][k]==1)
{
p.first=j;
p.second=k;
q.push(p);
visited[j][k]=1;
dist[j][k]=0;
}
else{
visited[j][k]=0;
dist[j][k] = MAX;
}
}
}
bfs();
for(j=0;j<n;j++)
{
for(k=0;k<m;k++)
{
//printf("%lld ",dist[j][k]);
cout<<dist[j][k]<<" ";
}
//printf("\n");
cout<<endl;
}
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBNQVggMzIwMDAKCmNoYXIgc3RyWzIwMF0gOwp0eXBlZGVmIHN0cnVjdCBsbAp7CiAgICBpbnQgaG9yejsKICAgIGludCB2ZXJ0Owp9bW92ZXM7Cgptb3ZlcyBtb3ZlMVs0XTsKCmludCBhcnJbMjEwXVsyMTBdOwppbnQgdmlzaXRlZFsyMTBdWzIxMF07CmludCBkaXN0WzIxMF1bMjEwXTsKaW50IG4sbTsKcXVldWU8IHBhaXI8aW50LGludD4gPiBxOwoKCnZvaWQgaW5pdCgpCnsKICAgIGludCBpLGo7CiAgICBmb3IoaT0wO2k8bjtpKyspCiAgICB7CiAgICAgICAgZm9yKGo9MDtqPG07aisrKQogICAgICAgIHsKICAgICAgICAgICAgaWYoYXJyW2ldW2pdKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkaXN0W2ldW2pdPTA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZGlzdFtpXVtqXT1NQVg7CiAgICAgICAgfQogICAgfQp9CgoKdm9pZCBiZnMoKQp7CiAgICBpbnQgaSxqLGsseCx5OwogICAgcGFpcjxpbnQsaW50PiBwLHRlbXA7CiAgICB3aGlsZSghcS5lbXB0eSgpKQogICAgewogICAgICAgIHA9cS5mcm9udCgpOwogICAgICAgIHEucG9wKCk7CiAgICAgICAgZm9yKGk9MDtpPDQ7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgeD1wLmZpcnN0K21vdmUxW2ldLmhvcno7CiAgICAgICAgICAgIHk9cC5zZWNvbmQrbW92ZTFbaV0udmVydDsKCiAgICAgICAgICAgIGlmKHg+PTAmJng8biYmeT49MCYmeTxtJiYhdmlzaXRlZFt4XVt5XSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmlzaXRlZFt4XVt5XT0xOwogICAgICAgICAgICAgICAgZGlzdFt4XVt5XT1kaXN0W3AuZmlyc3RdW3Auc2Vjb25kXSsxOwogICAgICAgICAgICAgICAgdGVtcC5maXJzdD14OwogICAgICAgICAgICAgICAgdGVtcC5zZWNvbmQ9eTsKICAgICAgICAgICAgICAgIHEucHVzaCh0ZW1wKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBpbnQgdGVzdCxpLGosayxudW07CiAgICBwYWlyPGludCxpbnQ+IHA7CgogICAgbW92ZTFbMF0uaG9yej0wOwogICAgbW92ZTFbMF0udmVydD0tMTsKCiAgICBtb3ZlMVsxXS5ob3J6PTA7CiAgICBtb3ZlMVsxXS52ZXJ0PTE7CgogICAgbW92ZTFbMl0uaG9yej0tMTsKICAgIG1vdmUxWzJdLnZlcnQ9MDsKCiAgICBtb3ZlMVszXS5ob3J6PTE7CiAgICBtb3ZlMVszXS52ZXJ0PTA7CgogICAgY2luPj50ZXN0OwogICAvLyBzY2FuZigiJWxsZCIsJnRlc3QpOwogICAgZm9yKGk9MDtpPHRlc3Q7aSsrKQogICAgewoKICAgICAgICBjaW4+Pm47CiAgICAgICAgY2luPj5tOwogICAgICAgIC8vIHNjYW5mKCIlbGxkIiwmbik7CiAgICAgICAgICAvL3NjYW5mKCIlbGxkIiwmbSk7CiAgICAgICAgZm9yKGo9MDtqPG47aisrKQogICAgICAgIHsKICAgICAgICAgICAgc2NhbmYoIiVzIixzdHIpIDsKICAgICAgICAgICAgCiAgICAgICAgICAgIGZvcihpbnQgaz0wO2s8bTtrKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGFycltqXVtrXT1zdHJba10tJzAnOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZihhcnJbal1ba109PTEpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcC5maXJzdD1qOwogICAgICAgICAgICAgICAgICAgIHAuc2Vjb25kPWs7CiAgICAgICAgICAgICAgICAgICAgcS5wdXNoKHApOwogICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRbal1ba109MTsKICAgICAgICAgICAgICAgICAgICBkaXN0W2pdW2tdPTA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRbal1ba109MDsKICAgICAgICAgICAgIAkJZGlzdFtqXVtrXSA9IE1BWDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgCiAgICAgICAgYmZzKCk7CiAgICAgICAgZm9yKGo9MDtqPG47aisrKQogICAgICAgIHsKICAgICAgICAgICAgZm9yKGs9MDtrPG07aysrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAvL3ByaW50ZigiJWxsZCAiLGRpc3Rbal1ba10pOwogICAgICAgICAgICAgICAgY291dDw8ZGlzdFtqXVtrXTw8IiAiOwogICAgICAgICAgICB9CiAgICAgICAgICAgLy9wcmludGYoIlxuIik7CiAgICAgICAgICAgY291dDw8ZW5kbDsKICAgICAgICB9CgoKICAgIH0KICAgIHJldHVybiAwOwp9CgoKCgoKCgoK