#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
using namespace std;
int main(){
int x,y;
cin>>x>>y;
int i,j;
int count;
char mine[x][y];
int pay[x][y];
for(i=0;i<x;i++)
for(j=0;j<y;j++)
cin>>mine[i][j];
for(i=0;i<x;i++){
for(j=0;j<y;j++){
if(mine[i][j]=='?'){
if(mine[i-1][j-1]=='*')if(j-1<y&&j-1>=0)if(i-1<x&&i-1>=0)count++;
if(mine[i-1][j]=='*')if(j<y&&j>=0)if(i-1<x&&i-1>=0)count++;
if(mine[i-1][j+1]=='*')if(j+1<y&&j+1>=0)if(i-1<x&&i-1>=0)count++;
if(mine[i][j-1]=='*')if(j-1<y&&j-1>=0)if(i<x&&i>=0)count++;
if(mine[i][j]=='*')if(j<y&&j>=0)if(i-1<x&&i>=0)count++;
if(mine[i][j+1]=='*')if(j+1<y&&j+1>=0)if(i<x&&i>=0)count++;
if(mine[i+1][j-1]=='*')if(j-1<y&&j-1>=0)if(i+1<x&&i+1>=0)count++;
if(mine[i+1][j]=='*')if(j<y&&j>=0)if(i+1<x&&i+1>=0)count++;
if(mine[i+1][j+1]=='*')if(j+1<y&&j+1>=0)if(i+1<x&&i+1>=0)count++;
pay[i][j]=count;
count=0;
}
else mine[i][j]='*';
}
}
for(i=0;i<x;i++){
for(j=0;j<y;j++){
if(mine[i][j]=='?') cout<<pay[i][j];
else cout<<mine[i][j];
}
cout<<"\n";
}
return 0;
}
/**************************************************************
Problem: 2341
User: admin
Language: C++
Result: Accepted
Time:53 ms
Memory:2072 kb
****************************************************************/