import java.util.Scanner;

// 扫雷
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
            int n = in.nextInt();
            int m = in.nextInt();
            in.nextLine();//
            char[][] arr = new char[n][m];
            // 初始化
            for (int i = 0; i < n; i++) {
                String line = in.nextLine();
                arr[i] = line.toCharArray();
            }
            in.close();
            // 存储结果
            String[][] res = new String[n][m];
            for (int i = 0; i < n; i++) {// 行
                for (int j = 0; j < m; j++) {// 列
                    // 雷,直接输出打印
                    if ('*' ==arr[i][j]) {
                        res[i][j] = "*";
                    } else {
                        // 计算雷邻格,输出数字
                        // 8个方向:
                        int cnt = 0;// 雷邻格计数
                        int tempI = i;// 参照点 i
                        int tempJ = j;// 参照点 j
                        int pTimes = 3;
                        for (int p = tempI - 1; pTimes-- > 0; p++) {
                            int qTimes = 3;
                            for (int q = tempJ - 1; qTimes-- > 0; q++) {
                                if (!(p == i && q == j) // 跳过自身(i,j)
									&& ((p >= 0 && q >= 0) && (p < n && q < m))) {// 保证下标在边界内
                                    if ('*' == arr[p][q]) {
                                        cnt++;
                                    }
                                }
                            }
                        }
                        res[i][j] = cnt + "";
                    }
                }
            }
            for(String[] rArr : res){
                for(int i = 0;i<rArr.length;i++){
                    System.out.printf("%s",rArr[i]);
                }
                System.out.println();
            }
    }
}

以(i,j)为中心的8个方向