#include <bits/stdc++.h>
using namespace std;
int GCD(const int& a, const int& b) {
  const int& _a = max(a, b);
  const int& _b = min(a, b);
  if (_a % _b == 0) {
    return _b;
  } else {
    return GCD(_b, _a % _b);
  }
}
int LCM(const int& a, const int& b) {
  const int& _a = max(a, b);
  const int& _b = min(a, b);
  return (_a * _b) / (GCD(_a, _b));
}
int main() {
  int h, w;
  cin >> h >> w;
  string board[50];
  for (int i = 0; i < h; i++) {
    cin >> board[i];
  }
  const int dx[8] = {-1, 0, -1, 0, 1, -1, -1, 1};
  const int dy[8] = {0, 1, 0, -1, 1, 1, -1, -1};
  for (int i = 0; i < h; i++) {
    for (int j = 0; j < w; j++) {
      if (board[i][j] == '#') {
        continue;
      }
      int num = 0;
      for (int d = 0; d < 8; d++) {
        const int ni = i + dy[d];
        const int nj = j + dx[d];
        if (ni < 0 or h <= ni) {
          continue;
        }
        if (nj < 0 or w <= nj) {
          continue;
        }
        if (board[ni][nj] == '#') {
          num++;
        }
      }
      board[i][j] = char(num + '0');
    }
  }
  for (int i = 0; i < h; i++) {
    cout << board[i] << endl;
  }
  return 0;
}
