#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
getchar(); //去除\n
char arr[n+2][m+2]; //生成二维数组,+2防止越界(左右各+1)
for(int i=0;i<=n+1;i++){
for(int j=0;j<=m+1;j++){
arr[i][j] = '.';
}
} //初始化数组全为'.'
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
arr[i][j]=getchar();
}
getchar(); //去除\n
} //将雷图存入数组
int cnt=0; //记录周围雷数
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cnt=0;
if(arr[i][j]=='*'){
cout<<"*";
}else{
for(int k=i-1;k<=i+1;k++){
for(int p=j-1;p<=j+1;p++){
if(arr[k][p]=='*'){
cnt++; //以非雷点为中心3*3区域数雷,因为本身非雷,不会影响结果
}
}
}
cout<<cnt; //输出
}
}
cout<<endl; //记得换行
}
}