#include <bits/stdc++.h>
using namespace std;
int main() {
  int H, W;
  cin >> H, W;
  vector<vector<char>> S(H + 2, vector<char>(W + 2));
  for (int i = 0; i < H; i++) {
    for (int j = 0; j < W; j++) {
      cin >> S.at(i + 1).at(j + 1);
    }
  }
  vector<vector<char>> T(H, vector<char>(W, '#'));
  for (int i = 0; i < W + 2; i++) {
    S.at(0).at(i) = '.';
    S.at(H + 1).at(i) = '.';
  }
  for (int j = 0; j < H + 2; j++) {
    S.at(j).at(0) = '.';
    S.at(j).at(W + 1) = '.';
  }
  for (int i = 1; i <= H; i++) {
    for (int j = 1; j <= W; j++) {
      if (S.at(i).at(j) != '#') {
        int cnt = 0;
        if (S.at(i - 1).at(j - 1) == '#') {
          cnt++;
        }
        if (S.at(i - 1).at(j) == '#') {
          cnt++;
        }
        if (S.at(i - 1).at(j + 1) == '#') {
          cnt++;
        }
        if (S.at(i).at(j - 1) == '#') {
          cnt++;
        }
        if (S.at(i).at(j + 1) == '#') {
          cnt++;
        }
        if (S.at(i + 1).at(j - 1) == '#') {
          cnt++;
        }
        if (S.at(i + 1).at(j) == '#') {
          cnt++;
        }
        if (S.at(i + 1).at(j + 1) == '#') {
          cnt++;
        }
        T.at(i - 1).at(j - 1) = cnt;
      }
    }
  }
  for (int i = 0; i < H; i++) {
    for (int j = 0; j < W; j++) {
      cout << T.at(i).at(j);
    }
    cout << endl;
  }
  return 0;
}
