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

void ConfirmBomb(vector<string> vec, int column, int row, int maxcolumn, int maxrow, int bombCount)
{
  //範囲を確認してからボムかどうかを確認する
  if((column < 0) || (column == maxcolumn))
  {
    return;
  }
  if((row < 0) || (row == maxrow))
  {
    return;
  }
  if(vec[column].at(row) == '#')
  {
    bombCount++;
  }
}
  
string CountBomb(vector<string> vec, int column, int row, int maxcolumn, int maxrow)
{
  //#の場合は＃を返す
  if(vec[column].at(row) == '#')
  {
    return "#";
  }
  
  int BombCount = 0;
  //上の行を確認
  for(int i = -1; i < 2; i ++)
  {
    for(int j = -1; j < 2; j ++)
    {
      ConfirmBomb(vec, column, row, maxcolumn, maxrow, BombCount);
    }
  }
  return to_string(BombCount);
}
 
int main() {
  int h, w;
  vector<string> inVec, outVec;
  
  cin >> h, w;
  for(int i = 0; i < h; i++)
  {
    string temp;
    cin >> temp;
    inVec.push_back(temp);
    outVec.push_back(temp);
  }
  
  for(int i = 0; i < h; i++)
  {
    for(int j = 0; j < w; j++)
    {
      outVec[i].at(j) = CountBomb(inVec, i, j, h, w).at(0):
    }
  }
  
  for(int i = 0; i < h; i++)
  {
    cout << outVec[i] << endl;
  }
}