#include <stdio.h>

int main()
{
    int n, m;
    scanf("%d%d", &n, &m);
    char arr[1000][1000]={0};//如果这里写arr[n+2][m+2]的话不可以直接初始化,如果不初始化那么多的两行随机生成字符,有可能随机为'*',所以必须初始化!!!
    for (int i = 1; i <= n; i++)//赋值内圈(去掉外围一圈)
    {
        for (int j = 1; j <= m; j++)
        {
            scanf(" %c ", &arr[i][j]);
        }
    }
    for (int i = 1; i <= n; i++)//遍历内圈所有元素
    {
        for (int j = 1; j <= m; j++)//遍历内圈所有元素
        {
            if (arr[i][j] != '*')//判断是否为*,如果不是,就计算周围有多少个(九宫格计算)
            {
                int count = 0;//遍历该元素九宫格,如果是count++。
                for (int q = i - 1; q <= i + 1; q++)
                {
                    for (int p = j - 1; p <= j + 1; p++)
                    {
                        if (arr[q][p] == '*')
                            count++;
                    }
                }
                printf("%d",count);//打印周围有几个雷
            }
            else {
            printf("*");//打印雷
            }
        }
        printf("\n");
    }
    return 0;
}