#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <math.h>
#include <stack>

#define MAX 32767

using namespace std;

//全局变量
int DL[101][101];//0不存储 -1表示地雷
int n,m;

void AddNum(int i ,int j ){//附近非地雷的地方加上++
    //上、下、左、右、左上、右上、左下、右下
    //上 下 左 右
    if(i-1>=1 && DL[i-1][j]!=-1 ) DL[i-1][j]++;
    if(i+1<=n && DL[i+1][j]!=-1 ) DL[i+1][j]++;
    if(j-1>=1 && DL[i][j-1]!=-1 ) DL[i][j-1]++;
    if(j+1<=m && DL[i][j+1]!=-1 ) DL[i][j+1]++;
    //左上、右上、左下、右下
    if( i-1>=1 && j-1>=1 && DL[i-1][j-1]!=-1 ) DL[i-1][j-1]++;
    if( i-1>=1 && j+1<=m && DL[i-1][j+1]!=-1 ) DL[i-1][j+1]++;
    if( i+1<=n && j-1>=1 && DL[i+1][j-1]!=-1 ) DL[i+1][j-1]++;
    if( i+1<=n && j+1<=m && DL[i+1][j+1]!=-1 ) DL[i+1][j+1]++;

}

int main()
{
    //test();
    //初始化
    char temp;
    cin>>n>>m;

    //DL init
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            DL[i][j]=0;

    getchar();

    for(int i =1;i<=n;i++){        //回车符被吃掉了
        for(int j =1; j<=m;j++){
            scanf("%c",&temp);
            if( temp =='*'){//This is a DL
                DL[i][j]=-1; //-1 for DL
                AddNum(i,j);
            }
        }
        getchar();
    }

    for(int i =1;i<=n;i++){
        for(int j =1; j<=m;j++){
            if(DL[i][j]==-1)
                cout<<"*";
            else
                cout<<DL[i][j];

        }
        cout<<endl;
    }


    return 0;
}