#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;
}