#include <stdio.h>
int main() {
int n = 0;
int m = 0;
scanf("%d %d", &n, &m);
char board1[1001][1001] = { 0 };//基本棋盘
char board2[1003][1003] = { 0 };//扩大棋盘防止数组越界
int i = 0;
int j = 0;
getchar();//吸收空格防止干扰
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
scanf("%c", &board1[i][j]);
}
getchar();//吸收空格防止干扰
}
for (i = 1; i < n + 1; i++) {
for (j = 1; j < m + 1; j++) {
if (board1[i - 1][j - 1] == '*') {
board2[i][j] = 1;//在扩大棋盘中*用1代替,.用0代替
} else {
board2[i][j] = 0;
}
}
}
for (i = 0; i < n ; i++) {
for (j = 0; j < m ; j++) {
if (board1[i][j] == '.') {//棋盘中不为*时,计算其八个方向有多少*
int count = 0;
count += board2[i + 1][j] + board2[i][j] +
board2[i + 2][j] + board2[i][j + 1] + board2[i + 2][j + 1] +
board2[i + 1][j + 2] + board2[i][j + 2] + board2[i + 2][j + 2];
board1[i][j] = count + '0';//转换成字符存在棋盘里
}
}
}
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
printf("%c", board1[i][j]);//输出棋盘
}
printf("\n");
}
return 0;
}