#include <bits/stdc++.h>

using namespace std;

int dx[] = {0, 0, 1, -1, 1,-1,1,-1};
int dy[] = {1, -1, 0, 0, 1,-1,-1,1};
int m,n;
bool isSafe(int x, int y){
    if(x<0||y<0||x>=n||y>=m)return false;
    return true;
}

int main()
{
 scanf("%d %d",&n,&m);
 char c[n][m];
 int x[n][m];
 for(int i=0;i<n;i++)
    fill(x[i],x[i]+m,0);

 for(int i=0;i<n;i++)
    scanf("%s",&c[i]);

 for(int i=0;i<n;i++)
 {
     for(int j=0;j<m;j++)
     {
         if(c[i][j]=='.')
         {
             //cout<<" i = "<<i<<" // "<<" j = "<<j<<endl;
             for(int k=0;k<8;k++)
             {
                 if(isSafe(i+dx[k],j+dy[k])&&c[i+dx[k]][j+dy[k]]=='#')
                 {
                     x[i][j]++;
                     //cout<<"x = "<<x[i][j]<<" i = "<<i+dx[k]<<" j ="<<j+dy[k]<<endl;
                 }
             }
         }
     }
 }
for(int i=0;i<n;i++)
{
    for(int j=0;j<m;j++)
    {
        if(c[i][j]=='.')
            printf("%d",x[i][j]);
        else
            printf("%c",c[i][j]);
    }
    printf("\n");
}


    /*
    int n1,n2,n3;
    scanf("%d %d %d",&n1,&n2,&n3);
    if(n1==n2)
        printf("%d",n3);
    else if(n1==n3)
        printf("%d",n2);
    else if(n2==n3)
        printf("%d",n1);

    /*
    long long int ans=0;
    int a,b;
    scanf("%d %d",&a,&b);
    int A[b],B[a];
    fill(A,A+b,a);
    fill(B,B+a,b);
    if(a>b)
    {
        int i=0;
        for(i;i<b;i++)
        {
            ans+=(A[i]-B[a]);
        }
        for(i;i<a;i++)
        {
            ans+=B[i];
        }
        printf("%lld",ans);
    }
    else if(b>a)
    {
        int i=0;
        for(i;i<a;i++)
        {
            ans+=(A[i]-B[a]);
        }
        for(i;i<b;i++)
        {
            ans-=B[i];
        }
        printf("%lld",ans);
    }
    else
        printf("0");
    /*
    int n;
    scanf("%d",&n);
    string x;
    for(int i=0;i<n;i++)
    {
        cin>>x;
        if(x[x.size()-1]=='s'||x[x.size()-1]=='o'||x[x.size()-1]=='x'||(x[x.size()-1]=='h'&&x[x.size()-2]=='c'))
        {
            cout<<x<<"es"<<endl;
        }
        else if(x[x.size()-1]=='f')
        {
            for(int i=0;i<x.size()-1;i++)
                cout<<x[i];

            cout<<"ves"<<endl;
        }
        else if(x[x.size()-1]=='e'&&x[x.size()-2]=='f')
        {
            for(int i=0;i<x.size()-2;i++)
                cout<<x[i];
            cout<<"ves"<<endl;
        }
        else if(x[x.size()-1]=='y')
        {
            for(int i=0;i<x.size()-1;i++)
                cout<<x[i];
            cout<<"ies"<<endl;
        }
        else
            cout<<x<<"s"<<endl;

        //cout<<">>"<<x<<endl;
    }
    /*
    int n;
    scanf("%d",&n);/*
    for(int i=2;i<=n;i+=4,c++)
        cout<<i<<"  "<<c<<endl;

    int c=2,x=1;
    while(c+3<=n)
    {
        c+=3;
        x++;
    }
    printf("%d",x);
    /*
    if(n%10==9)
    {
       // cout<<"00"<<endl;
       n++;
        stringstream x;
        x<<n;
        string c;
        x>>c;
        for(int i=0;i<c.size();i++)
            if(c[i]=='0')
                c[i]='1';
        cout<<c;
    }
    else
        printf("%d",n+1);
    /*
    string x;
    cin>>x;
    if(x.size()%2==0)
        printf("Or not.");
    else
        printf("Odd.");
    /*
        if(x[0]-'0'==9)
            {
                x[0]='9';
                for(int i=1;i<x.size();i++)
                    {
                        if(x[i]-'0'>4) x[i]=(9-(x[i]-'0'))+'0';
                    }
            }
            else
            {
                for(int i=0;i<x.size();i++)
                    {
                         if(x[i]-'0'>4) x[i]=(9-(x[i]-'0'))+'0';
                    }
            }
    cout<<x;*/
    return 0;
}
