#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m;
    cin>>n>>m;
    getchar();   //去除\n

    char arr[n+2][m+2];  //生成二维数组,+2防止越界(左右各+1)
    for(int i=0;i<=n+1;i++){
        for(int j=0;j<=m+1;j++){
            arr[i][j] = '.';
        }
    } //初始化数组全为'.'

    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            arr[i][j]=getchar();
        }
        getchar();  //去除\n
    } //将雷图存入数组

    int cnt=0;  //记录周围雷数

    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cnt=0;
            if(arr[i][j]=='*'){
                cout<<"*";
            }else{
                for(int k=i-1;k<=i+1;k++){
                    for(int p=j-1;p<=j+1;p++){
                        if(arr[k][p]=='*'){
                            cnt++;              //以非雷点为中心3*3区域数雷,因为本身非雷,不会影响结果
                        }
                    }
                }
                cout<<cnt;  //输出
            }
        }
        cout<<endl;  //记得换行
    }

}