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