TM
#include<bits/stdc++.h>
using namespace std;
char c[110][110];
int main(){
int n,m; cin>>n>>m;
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>c[i][j];
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
if(c[i][j]=='*')cout<<'*';
else{
int k=0;
if(c[i-1][j]=='*')k++;
if(c[i+1][j]=='*')k++;
if(c[i][j-1]=='*')k++;
if(c[i][j+1]=='*')k++;
if(c[i+1][j+1]=='*')k++;
if(c[i+1][j-1]=='*')k++;
if(c[i-1][j+1]=='*')k++;
if(c[i-1][j-1]=='*')k++;
cout<<k;
}
cout<<endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
char c[110][110];
int CNT(int x,int y){
int X=0;
for(int i=x-1;i<=x+1;i++)
for(int j=y-1;j<=y+1;j++)
if(c[i][j]=='*')X++;
return X;
}
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%s",c[i]+1);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
if(c[i][j]=='?')printf("%d",CNT(i,j));
else putchar('*');
puts("");
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
char c[110][110];
int x[110][110];
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%s",c[i]+1);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(c[i][j]=='?')
x[i][j]=(int)(c[i+1][j]=='*')+(c[i-1][j]=='*')+(c[i][j+1]=='*')+(c[i][j-1]=='*')
+(c[i+1][j+1]=='*')+(c[i+1][j-1]=='*')+(c[i-1][j+1]=='*')+(c[i-1][j-1]=='*');
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
if(c[i][j]=='?')printf("%d",x[i][j]);
else putchar('*');
puts("");
}
return 0;
}