#include <bits/stdc++.h>
using namespace std;
struct node {
  int num;
  int x[10];
  int y[10];
} s[20];
int n, m, h[11];
int dx[4] = {0, 0, -1, 1};
int dy[4] = {-1, 1, 0, 0};
char ch[1010][1010];
int main() {
  s[1].num = 2;
  s[1].x[1] = 0;
  s[1].y[1] = 0;
  s[1].x[2] = 0;
  s[1].y[2] = 1;
  s[2].num = 2;
  s[2].x[1] = 0;
  s[2].y[1] = 0;
  s[2].x[2] = 1;
  s[2].y[2] = 0;
  s[3].num = 3;
  s[3].x[1] = 0;
  s[3].y[1] = -1;
  s[3].x[2] = 0;
  s[3].y[2] = 0;
  s[3].x[3] = 0;
  s[3].y[3] = 1;
  s[4].num = 3;
  s[4].x[1] = -1;
  s[4].y[1] = 0;
  s[4].x[2] = 0;
  s[4].y[2] = 0;
  s[4].x[3] = 1;
  s[4].y[3] = 0;
  s[5].num = 3;
  s[5].x[1] = 0;
  s[5].y[1] = -1;
  s[5].x[2] = 0;
  s[5].y[2] = 0;
  s[5].x[3] = -1;
  s[5].y[3] = 0;
  s[6].num = 3;
  s[6].x[1] = 0;
  s[6].y[1] = -1;
  s[6].x[2] = 0;
  s[6].y[2] = 0;
  s[6].x[3] = 1;
  s[6].y[3] = 0;
  s[7].num = 3;
  s[7].x[1] = 0;
  s[7].y[1] = 1;
  s[7].x[2] = 0;
  s[7].y[2] = 0;
  s[7].x[3] = -1;
  s[7].y[3] = 0;
  s[8].num = 3;
  s[8].x[1] = 0;
  s[8].y[1] = 1;
  s[8].x[2] = 0;
  s[8].y[2] = 0;
  s[8].x[3] = 1;
  s[8].y[3] = 0;
  s[9].num = 4;
  s[9].x[1] = -1;
  s[9].y[1] = 0;
  s[9].x[2] = 0;
  s[9].y[2] = 0;
  s[9].x[3] = 0;
  s[9].y[3] = -1;
  s[9].x[4] = 0;
  s[9].y[4] = 1;
  s[10].num = 4;
  s[10].x[1] = 1;
  s[10].y[1] = 0;
  s[10].x[2] = 0;
  s[10].y[2] = 0;
  s[10].x[3] = 0;
  s[10].y[3] = -1;
  s[10].x[4] = 0;
  s[10].y[4] = 1;
  s[11].num = 4;
  s[11].x[1] = 0;
  s[11].y[1] = -1;
  s[11].x[2] = 0;
  s[11].y[2] = 0;
  s[11].x[3] = -1;
  s[11].y[3] = 0;
  s[11].x[4] = 1;
  s[11].y[4] = 0;
  s[12].num = 4;
  s[12].x[1] = 0;
  s[12].y[1] = 1;
  s[12].x[2] = 0;
  s[12].y[2] = 0;
  s[12].x[3] = -1;
  s[12].y[3] = 0;
  s[12].x[4] = 1;
  s[12].y[4] = 0;
  s[13].num = 5;
  s[13].x[1] = -1;
  s[13].y[1] = 0;
  s[13].x[2] = 1;
  s[13].y[2] = 0;
  s[13].x[3] = 0;
  s[13].y[3] = 0;
  s[13].x[4] = 0;
  s[13].y[4] = -1;
  s[13].x[5] = 0;
  s[13].y[5] = 1;
  cin >> n >> m;
  for (int i = 0; i <= n + 1; i++)
    for (int j = 0; j <= m + 1; j++) ch[i][j] = '#';
  for (int i = 1; i <= n; i++) {
    ch[0][0] = getchar();
    for (int j = 1; j <= m; j++) ch[i][j] = getchar();
  }
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++)
      if ((ch[i][j] == '.') && (ch[i][j - 1] == '#') && (ch[i][j + 1] == '#') &&
          (ch[i - 1][j] == '#') && (ch[i + 1][j] == '#')) {
        cout << -1 << endl;
        return 0;
      }
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++)
      if (ch[i][j] == '.')
        for (int k = 1; k < 14; k++) {
          int ok = 0;
          for (int a = 1; a <= s[k].num; a++)
            ok -= ch[i + s[k].x[a]][j + s[k].y[a]] != '.';
          if (ok < 0) continue;
          memset(h, 0, sizeof(h));
          for (int a = 1; a <= s[k].num; a++)
            for (int b = 0; b < 4; b++)
              if ((ch[i + s[k].x[a] + dx[b]][j + s[k].y[a] + dy[b]] >= '0') &&
                  (ch[i + s[k].x[a] + dx[b]][j + s[k].y[a] + dy[b]] <= '9'))
                h[ch[i + s[k].x[a] + dx[b]][j + s[k].y[a] + dy[b]] - '0'] = 1;
          int num = -1;
          for (int a = 0; a <= 9; a++)
            if (!h[a]) num = a;
          for (int a = 1; a <= s[k].num; a++)
            ch[i + s[k].x[a]][j + s[k].y[a]] = '0' + num;
          for (int a = 1; a <= s[k].num; a++)
            for (int b = 0; b < 4; b++)
              if (ch[i + s[k].x[a] + dx[b]][j + s[k].y[a] + dy[b]] == '.') {
                int cnt = 0;
                for (int c = 0; c < 4; c++)
                  cnt += ch[i + s[k].x[a] + dx[b] + dx[c]]
                           [j + s[k].y[a] + dy[b] + dy[c]] == '.';
                ok -= cnt == 0;
              }
          if (ok < 0) {
            for (int a = 1; a <= s[k].num; a++)
              ch[i + s[k].x[a]][j + s[k].y[a]] = '.';
            continue;
          }
        }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) printf("%c", ch[i][j]);
    printf("\n");
  }
}
