#include <bits/stdc++.h>
using namespace std;
char Find(char b[][60], int H, int W, int i, int j) {
  int t = 0;
  if (b[i][j] == '#') {
    return '#';
  }
  if (i + 1 < H && j < W && b[i + 1][j] == '#') {
    ++t;
  }
  if (i - 1 < H && j < W && b[i - 1][j] == '#') {
    ++t;
  }
  if (i < H && j + 1 < W && b[i][j + 1] == '#') {
    ++t;
  }
  if (i < H && j - 1 < W && b[i][j - 1] == '#') {
    ++t;
  }
  if (i + 1 < H && j + 1 < W && b[i + 1][j + 1] == '#') {
    ++t;
  }
  if (i + 1 < H && j - 1 < W && b[i + 1][j - 1] == '#') {
    ++t;
  }
  if (i - 1 < H && j + 1 < W && b[i - 1][j + 1] == '#') {
    ++t;
  }
  if (i - 1 < H && j - 1 < W && b[i - 1][j - 1] == '#') {
    ++t;
  }
  return '0' + t;
}
int main() {
  char a[60][60], b[60][60];
  int H, W, i, j;
  while (scanf("%d %d", &H, &W)) {
    for (i = 0; i < H; ++i) {
      scanf("%s", &a[i]);
    }
    for (i = 0; i < H; ++i) {
      for (j = 0; j < W; ++j) {
        b[i][j] = Find(a, H, W, i, j);
      }
    }
    for (i = 0; i < H; ++i) {
      printf("%s\n", &b[i]);
    }
    memset(a, 0, sizeof(a));
    memset(b, 0, sizeof(b));
  }
  return 0;
}
