#include <bits/stdc++.h>
char int_to_char(int n);
int main() {
  int h, w;
  char s[50][50 + 1];
  char answerS[50][50 + 1];
  scanf("%d %d", &h, &w);
  for (int i = 0; i < h; i++) {
    scanf("%s", &s[i]);
  }
  for (int i = 0; i < h; i++) {
    for (int j = 0; j < w; j++) {
      if (s[i][j] == '#') {
        answerS[i][j] = '#';
      } else {
        int numberOfMines = 0;
        if ((i > 0) && (j > 0)) {
          if (s[i - 1][j - 1] == '#') {
            numberOfMines++;
          }
        }
        if (i > 0) {
          if (s[i - 1][j] == '#') {
            numberOfMines++;
          }
        }
        if ((i > 0) && ((j - 1) < w)) {
          if (s[i - 1][j + 1] == '#') {
            numberOfMines++;
          }
        }
        if (j > 0) {
          if (s[i][j - 1] == '#') {
            numberOfMines++;
          }
        }
        if ((j - 1) < w) {
          if (s[i][j + 1] == '#') {
            numberOfMines++;
          }
        }
        if (((i - 1) < h) && (j > 0)) {
          if (s[i + 1][j - 1] == '#') {
            numberOfMines++;
          }
        }
        if ((i - 1) < h) {
          if (s[i + 1][j] == '#') {
            numberOfMines++;
          }
        }
        if (((i - 1) < h) && ((j - 1) < w)) {
          if (s[i + 1][j + 1] == '#') {
            numberOfMines++;
          }
        }
        answerS[i][j] = int_to_char(numberOfMines);
      }
    }
  }
  for (int i = 0; i < h; i++) {
    for (int j = 0; j < w; j++) {
      putchar(answerS[i][j]);
    }
    putchar('\n');
  }
  return 0;
}
char int_to_char(int n) {
  if (n == 0) return '0';
  if (n == 1) return '1';
  if (n == 2) return '2';
  if (n == 3) return '3';
  if (n == 4) return '4';
  if (n == 5) return '5';
  if (n == 6) return '6';
  if (n == 7) return '7';
  if (n == 8) return '8';
  if (n == 9) return '9';
}
