#include <stdio.h>
#include <stdlib.h>
int n, m;
void func(char *arr)
{
char count;
for(int i = 0 ; i < n ; i++)
{
for(int j = 0 ; j < m ; j++)
{
count = '0';
//是雷就不管
if(arr[i * m + j] == '*')
continue;
else if(arr[i * m + j] == '.')
{
//左上为雷
if((i-1 >= 0 && j-1 >= 0) && arr[(i-1)*m+j-1] == '*')
count++;
//正上方为雷
if(i-1 >= 0 && arr[(i-1)*m+j] == '*')
count++;
//右上方为雷
if((i-1 >= 0 && j+1 < m) && arr[(i-1)*m+j+1] == '*')
count++;
//左边为雷
if(j-1 >= 0 && arr[i*m+j-1] == '*')
count++;
//右边为雷
if(j+1 < m && arr[i*m+j+1] == '*')
count++;
//左下为雷
if(i+1 < n && j-1 >= 0 && arr[(i+1)*m+j-1] == '*')
count++;
//正下方为雷
if(i+1 < n && arr[(i+1)*m+j] == '*')
count++;
//右下方为雷
if(i+1 < n && j+1 < m && arr[(i+1)*m+j+1] == '*')
count++;
}
arr[i*m+j] = count;
}
}
}
int main() {
scanf("%d %d", &n, &m);
getchar();
char arr[n][m];
for (int i = 0 ; i < n ; i++) {
for (int j = 0 ; j < m ; j ++) {
scanf("%c", &arr[i][j]);
}
getchar(); //去除换行符
}
func(&arr[0][0]);
for (int i = 0 ; i < n ; i++) {
for (int j = 0 ; j < m ; j ++) {
printf("%c",arr[i][j]);
}
printf("\n");
}
return 0;
}