import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
int n = in.nextInt();
int m = in.nextInt();
in.nextLine(); // 消耗换行符
//定义个大一圈的数组
char[][] arr = new char[n + 2][m + 2];
//先把一圈 .装进去
for (int i = 0; i < n + 2; i++) {
for (int j = 0; j < m + 2; j++) {
if (i == 0 || j == 0 || i == n+1 || j == m+1) {
arr[i][j] = '.';
}
}
}
//再赋值内圈
for (int i = 1; i < n + 1; i++) {
String str = in.nextLine();
char[] ch = str.toCharArray();
for (int j = 1; j < m + 1; j++) {
arr[i][j]=ch[j-1];
}
}
//定义arr1装结果
char[][] arr1 = arr;
//遍历内圈
for (int i = 1; i < n+1; i++) {
for (int j = 1; j < m+1; j++) {
int res = 0;
if (arr[i][j] != '*') {
for (int k = i - 1; k <= i + 1; k++) {
for (int l = j - 1; l <= j + 1; l++) {
if ("*".equals(String.valueOf(arr[k][l]))) {
res++;
}
}
}
arr1[i][j] =(char)(res + '0');
}
}
}
//输出结果arr1
for (int i = 1; i < n+1; i++) {
for (int j = 1; j < m+1; j++) {
System.out.print(arr1[i][j]);
}
System.out.println();
}
}
}
}