#include<bits/stdc++.h>
using namespace std;
 
void dot_to_minenumber(vector<string>& map);
 
int main(){
  //入力
  int H, W;
  cin >> H >> W;
  vector<string> map(H);
  for ( int i = 0; i < map.size() ; i++) cin >> map.at(i);
  
  //処理
  dot_to_minenumber(map);
  
  //出力
  for ( string x : map ) cout << x << endl;
}
 
void dot_to_minenumber(vector<string>& map){
  vector<int> row = { -1 , 0 , 1};
  vector<int> column = { -1 , 0 , 1};//ある点の周辺を調べる用
  for ( int i = 0 ; i < map.size(); i++){
    for ( int j = 0 ; j < map.at(0).size(); j++){//マップの全探索
      if ( map.at(i).at(j) == '.'){//その点が地雷ではないとき
        int count = 0;
      	for ( int x : row ){
       	 for ( int y : column){
          	if (0 <= (i + x) && (i + x) < map.size() && 
                0 <= (j + y) && (j + y ) < map.at(0).size() &&
                map.at(i + x).at(j + y) == '#' ) count++;//その点回りに文字が存在し、かつ地雷ならcount++
                   map.at(i).at(j) = '0' + count;//(1)よく知らないけどこれでintをcharで代入できる
       	 }
      	}
        /*(1)の代わりにこれでも代入できる
        string s = to_string(count);
        map.at(i).at(j) = s.at(0);
        */
      }//if文終了
    }
  }//ループ終了