#include <bits/stdc++.h>
using namespace std;

int main() {
	int h,w;
	cin >> h>>w;
  vector<string> str(h);
  for(int i=0;i<h;i++){
    cin>>str.at(i);
  }
  vector<vector<string>> vec(h,vector<string>(w));
  vector<vector<int>> vec2(h,vector<int>(w));
  for(int i=0;i<h;i++){
    for(int k=0;k<w;k++){
      string s=str.at(i);
      vec.at(i).at(k)=s.at(k);
    }
  }
    for(int i=0;i<h;i++){
      for(int k=0;k<w;k++){
        if(1<h && 1<w){
          if(vec.at(i).at(k)=="#" && 0<i && i<h-1 && 0<k &&k<w-1) {
            vec2.at(i).at(k+1)+=1;
            vec2.at(i).at(k-1)+=1;
            vec2.at(i-1).at(k-1)+=1;
            vec2.at(i-1).at(k)+=1;
            vec2.at(i-1).at(k+1)+=1;
            vec2.at(i+1).at(k-1)+=1;
            vec2.at(i+1).at(k)+=1;
            vec2.at(i+1).at(k+1)+=1;
          }
          if(vec.at(i).at(k)=="#" && i==0 &&k==0) {
            vec2.at(i).at(k+1)+=1;
            vec2.at(i+1).at(k)+=1;
            vec2.at(i+1).at(k+1)+=1;
          }
          if(vec.at(i).at(k)=="#" && i==0 && 0<k &&k<w-1) {
            vec2.at(i).at(k+1)+=1;
            vec2.at(i).at(k-1)+=1;
            vec2.at(i+1).at(k-1)+=1;
            vec2.at(i+1).at(k)+=1;
            vec2.at(i+1).at(k+1)+=1;
          }
          if(vec.at(i).at(k)=="#" && i==0 && k==w-1) {
            vec2.at(i).at(k-1)+=1;
            vec2.at(i+1).at(k-1)+=1;
            vec2.at(i+1).at(k)+=1;
          }
          if(vec.at(i).at(k)=="#" && 0<i && i<h-1 && k==0) {
            vec2.at(i).at(k+1)+=1;
            vec2.at(i-1).at(k)+=1;
            vec2.at(i-1).at(k+1)+=1;
            vec2.at(i+1).at(k)+=1;
            vec2.at(i+1).at(k+1)+=1;
          }
          if(vec.at(i).at(k)=="#" && 0<i && i<h-1 &&k==w-1) {
            vec2.at(i).at(k-1)+=1;
            vec2.at(i-1).at(k-1)+=1;
            vec2.at(i-1).at(k)+=1;
            vec2.at(i+1).at(k-1)+=1;
            vec2.at(i+1).at(k)+=1;
          }
          if(vec.at(i).at(k)=="#" &&i==h-1 && 0<k &&k<w-1) {
            vec2.at(i).at(k+1)+=1;
            vec2.at(i).at(k-1)+=1;
            vec2.at(i-1).at(k-1)+=1;
            vec2.at(i-1).at(k)+=1;
            vec2.at(i-1).at(k+1)+=1;
          }
          if(vec.at(i).at(k)=="#" && i==h-1 && k==0 ) {
            vec2.at(i).at(k+1)+=1;
            vec2.at(i-1).at(k)+=1;
            vec2.at(i-1).at(k+1)+=1;
          }
          if(vec.at(i).at(k)=="#" && i==h-1 &&k==w-1) {
            vec2.at(i).at(k-1)+=1;
            vec2.at(i-1).at(k-1)+=1;
            vec2.at(i-1).at(k)+=1;
          }
        }
      if(h==1 && 1<w){
        if(vec.at(i).at(k)=="#" && i==0 &&k==0) {
          vec2.at(i).at(k+1)+=1;
        }
        if(vec.at(i).at(k)=="#" && i==0 && 0<k &&k<w-1) {
          vec2.at(i).at(k+1)+=1;
          vec2.at(i).at(k-1)+=1;
        }
        if(vec.at(i).at(k)=="#" && i==0 && k==w-1) {
          vec2.at(i).at(k-1)+=1;
        }
      }
      if(w==1&& 1<h){
        if(vec.at(i).at(k)=="#" && i==0 &&k==0) {
          vec2.at(i+1).at(k)+=1;
        }
        if(vec.at(i).at(k)=="#" && 0<i && i<h-1 && k==0) {
          vec2.at(i-1).at(k)+=1;
          vec2.at(i+1).at(k)+=1;
        }
        if(vec.at(i).at(k)=="#" && i==h-1 && k==0 ) {
          vec2.at(i-1).at(k)+=1;
        }
      }
      if(w==0 && h==0){
        continue;
        }

      }
    }
  for(int i=0;i<h;i++){
    for(int k=0;k<w;k++){
      if(vec.at(i).at(k)=="#"){
        cout<<vec.at(i).at(k);
      }
      else{
        cout<<vec2.at(i).at(k);
      }
    }
    cout<<endl;
  }
}


Measured memory_bytes: 384