function Main(input) {
    // 1行目がinput[0], 2行目がinput[1], …に入る
    H = Number(input.split("\n")[0].split(" ")[0]);
    W = Number(input.split("\n")[0].split(" ")[1]);
    S = new Array;
    S2= new Array;
    answer="";
    for(i=0;i<H;i++){
        S[i]= input.split("\n")[i+1].split("");
        S2[i]= input.split("\n")[i+1].split("");
    }

    function isBomb(a,b){
        if(a < 0 || b < 0|| a >= H || b >= W) return false;
        if(S[a][b]=="#"){
            return true;
        }else{
            return false;
        }
    }

    function mining(a,b){
        //特定のマスの周囲8マスに"#"があることをチェックする関数
        cnt=0;
        if(S[a][b]=="#"){
            return "#";
        }else{
            if(isBomb(a-1,b-1)) cnt++;
            if(isBomb(a-1,b)) cnt++;
            if(isBomb(a-1,b+1)) cnt++;
            if(isBomb(a,b-1)) cnt++;
            if(isBomb(a,b+1)) cnt++;
            if(isBomb(a+1,b-1)) cnt++;
            if(isBomb(a+1,b)) cnt++;
            if(isBomb(a+1,b+1)) cnt++;

            return cnt;
        }
    }
    
    for(i=0;i<H;i++){
        for(j=0;j<W;j++){
        S2[i][j]=mining(i,j);
        answer += S2[i][j];
        }
        answer += "\n";
    }

    console.log(answer);
    
}
//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require("fs").readFileSync("/dev/stdin", "utf8"));
