#include <bits/stdc++.h>
int main() {
  int a[100][100], n, m, i, j, t, t2;
  char ct;
  while (scanf("%d%d", &n, &m), m || n) {
    for (i = 0; i < n; i++) {
      for (j = 0; j < m; j++) {
        ct = getchar();
        if (ct == '\n') ct = getchar();
        if (ct == '#')
          a[i][j] = -20000;
        else if (ct == '.')
          a[i][j] = 0;
      }
    }
    if (a[0][0] < 0) {
      a[1][0]++;
      a[1][1]++;
      a[0][1]++;
    }
    if (a[0][m - 1] < 0) {
      a[1][m - 2]++;
      a[0][m - 2]++;
      a[1][m - 1]++;
    }
    if (a[n - 1][0] < 0) {
      a[n - 2][0]++;
      a[n - 2][1]++;
      a[n - 1][1]++;
    }
    if (a[n - 1][m - 1] < 0) {
      a[n - 2][m - 1]++;
      a[n - 2][m - 2]++;
      a[n - 1][m - 1]++;
    }
    for (i = 1; i < (n - 1); i++) {
      if (a[i][0] < 0) {
        for (t = -1; t < 2; t++) a[i + t][0]++;
        if (m > 1)
          for (t = -1; t < 2; t++) a[i + t][1]++;
      }
      if (a[i][m - 1] < 0) {
        for (t = -1; t < 2; t++) a[i + t][m - 1]++;
        if (m > 1)
          for (t = -1; t < 2; t++) a[i + t][m - 2]++;
      }
    }
    for (j = 1; j < (m - 1); j++) {
      if (a[0][j] < 0) {
        for (t = -1; t < 2; t++) a[0][j + t]++;
        if (n > 1)
          for (t = -1; t < 2; t++) a[1][j + t]++;
      }
      if (a[n - 1][j] < 0) {
        for (t = -1; t < 2; t++) a[n - 1][j + t]++;
        if (n > 1)
          for (t = -1; t < 2; t++) a[n - 2][j + t]++;
      }
    }
    for (i = 1; i < (n - 1); i++) {
      for (j = 1; j < (m - 1); j++) {
        if (a[i][j] < 0) {
          for (t = -1; t < 2; t++)
            for (t2 = -1; t2 < 2; t2++) a[i + t][j + t2]++;
        }
      }
    }
    for (i = 0; i < n; i++) {
      for (j = 0; j < m; j++) {
        if (a[i][j] < 0)
          printf("#");
        else
          printf("%d", a[i][j]);
      }
      printf("\n");
    }
  }
}
