#include <stdio.h>
char judge(char c,char b[][1000],int r,int s,int n,int m)
{
    char t;
    int count=0;
    if(c=='*')
    {
        t='*';
    }
    else 
    {
        if(r-1>=0&&b[r-1][s]=='*')
        {
            count++;
        }
        if(r-1>=0&&s-1>=0&&b[r-1][s-1]=='*')
        {
            count++;
        }
        if(r-1>=0&&s+1<m&&b[r-1][s+1]=='*')
        {
            count++;
        }
        if(s-1>=0&&b[r][s-1]=='*')
        {
            count++;
        }
        if(s+1<m&&b[r][s+1]=='*')
        {
            count++;
        }
        if(s-1>=0&&r+1<n&&b[r+1][s-1]=='*')
        {
            count++;
        }
        if(r+1<n&&b[r+1][s]=='*')
        {
            count++;
        }
        if(s+1<m&&r+1<n&&b[r+1][s+1]=='*')
        {
            count++;
        }
        t=count+'0';
    }
    return t;
}
int main() 
{
    int n,m;
    scanf("%d %d",&n,&m);
    getchar();//吸收换行符。
    char a[1000][1000];
    for(int i=0;i<n;i++)
    {
        scanf("%s",a[i]);
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            printf("%c",judge(a[i][j],a,i,j,n,m));
        }
        printf("\n");
    }
    return 0;
}

8个方向暴力求解即可。