#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
****************************************************************/