#include<bits/stdc++.h>
using namespace std;
int n,m,k,x,y,u,v;
struct pir{
int a,b;
};
char c[1005][1005];
int ans[1005][1005];
pir ch[1005][1005];
bool f[66][66];
void dfs1(int i,int j,int a,int b,int res){
if(c[a][b]=='#'){
return;
}
if(ans[a][b]){ans[i][j]+=ans[a][b];return;}
if(c[a][b]=='X'){
dfs()
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>c[i][j];
if(c[i][j]=='#') k++;
}
}
for(int i=1;2*i<=k;i++){
cin>>x>>y>>u>>v;
ch[x][y].a=u;
ch[x][y].b=v;
ch[u][v].a=x;
ch[u][v].b=y;
}
/*if(n<=60&&m<=60){
int cnt=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(c[i][j]=='.'){
memset(f,0,sizeof(f))
int a=i,b=j;
while(true){
if(c[a][b]=='#'){
return;
}
if(ans[a][b]){ans[i][j]+=ans[a][b];return;}
if(c[a][b]=='X'){
ans[i][j]+=(f[a][b]==0);
}}
dfs1(i,j,i,j,0);
}
else cout<<-1<<' ';
}
cout<<endl;
}
memset(ans,0,sizeof(ans));
for(int i=n;i>=1;i--){
for(int j=1;j<=m;j++){
if(c[i][j]=='.'){
for(int l=i;l<=n;l++){
if(c[l][j]=='#') break;
if(ans[l][j]){ ans[i][j]+=ans[l][j];break;}
ans[i][j]++;
}
}else ans[i][j]=-1;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<ans[i][j]<<' ';
}
cout<<endl;
}
memset(ans,0,sizeof(ans));
for(int i=1;i<=n;i++){
for(int j=m;j>=1;j--){
if(c[i][j]=='.'){
for(int l=j;l<=n;l++){
if(c[i][l]=='#') break;
if(ans[i][l]){ ans[i][j]+=ans[i][l];break;}
ans[i][j]++;
}
}else ans[i][j]=-1;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<ans[i][j]<<' ';
}
cout<<endl;
}
memset(ans,0,sizeof(ans));
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(c[i][j]=='.'){
for(int l=j;l>=1;l--){
if(c[i][l]=='#') break;
if(ans[i][l]){ ans[i][j]+=ans[i][l];break;}
ans[i][j]++;
}
}else ans[i][j]=-1;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<ans[i][j]<<' ';
}
cout<<endl;
}
return 0;
}*/
int cnt=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(c[i][j]=='.'){
for(int l=i;l>=1;l--){
if(c[l][j]=='#') break;
if(ans[l][j]){ ans[i][j]+=ans[l][j];break;}
ans[i][j]++;
}
cout<<ans[i][j]<<' ';
}
else cout<<-1<<' ';
}
cout<<endl;
}
memset(ans,0,sizeof(ans));
for(int i=n;i>=1;i--){
for(int j=1;j<=m;j++){
if(c[i][j]=='.'){
for(int l=i;l<=n;l++){
if(c[l][j]=='#') break;
if(ans[l][j]){ ans[i][j]+=ans[l][j];break;}
ans[i][j]++;
}
}else ans[i][j]=-1;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<ans[i][j]<<' ';
}
cout<<endl;
}
memset(ans,0,sizeof(ans));
for(int i=1;i<=n;i++){
for(int j=m;j>=1;j--){
if(c[i][j]=='.'){
for(int l=j;l<=n;l++){
if(c[i][l]=='#') break;
if(ans[i][l]){ ans[i][j]+=ans[i][l];break;}
ans[i][j]++;
}
}else ans[i][j]=-1;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<ans[i][j]<<' ';
}
cout<<endl;
}
memset(ans,0,sizeof(ans));
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(c[i][j]=='.'){
for(int l=j;l>=1;l--){
if(c[i][l]=='#') break;
if(ans[i][l]){ ans[i][j]+=ans[i][l];break;}
ans[i][j]++;
}
}else ans[i][j]=-1;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<ans[i][j]<<' ';
}
cout<<endl;
}
}