#include <bits/stdc++.h>
using namespace std;
const int N = 1000 + 10;
int n, m;
int px[] = {0, 1, -1, 0};
int py[] = {1, 0, 0, -1};
bool dig[10];
char a[N][N];
bool inside(int x, int y) { return x >= 0 && y >= 0 && x < n && y < m; }
bool alone(int x, int y) {
  int k, x2, y2;
  for (k = 0; k < 4; k++) {
    x2 = x + px[k];
    y2 = y + py[k];
    if (!inside(x2, y2)) continue;
    if (a[x2][y2] == '.') return false;
  }
  return true;
}
void go(int x, int y) {
  a[x][y] = '*';
  int k, x2, y2;
  for (k = 0; k < 4; k++) {
    x2 = x + px[k];
    y2 = y + py[k];
    if (!inside(x2, y2)) continue;
    if (a[x2][y2] == 'X') go(x2, y2);
    if (isdigit(a[x2][y2])) dig[a[x2][y2] - '0'] = 1;
  }
}
char getColor(int x, int y) {
  memset(dig, 0, sizeof(dig));
  go(x, y);
  int i;
  for (i = 0; i < 10; i++)
    if (dig[i] == 0) return '0' + i;
  assert(false);
}
void fill(int x, int y, char c) {
  a[x][y] = c;
  int k, x2, y2;
  for (k = 0; k < 4; k++) {
    x2 = x + px[k];
    y2 = y + py[k];
    if (!inside(x2, y2)) continue;
    if (a[x2][y2] == '*') fill(x2, y2, c);
  }
}
void print() {
  int i;
  for (i = 0; i < n; i++) printf("%s\n", a[i]);
  printf("\n\n");
}
int main() {
  scanf("%d%d", &n, &m);
  int i, j, k, t;
  for (i = 0; i < n; i++) scanf("%s", a[i]);
  int x[3], y[3];
  for (i = 0; i < n; i++)
    for (j = 0; j < m; j++) {
      if (a[i][j] != '.') continue;
      x[0] = i;
      y[0] = j;
      for (k = 0; k < 2; k++) {
        x[1] = x[0] + px[k];
        y[1] = y[0] + py[k];
        if (!inside(x[1], y[1])) continue;
        if (a[x[1]][y[1]] == '.') break;
      }
      if (k == 2) {
        printf("-1\n");
        return 0;
      }
      a[x[0]][y[0]] = 'X';
      a[x[1]][y[1]] = 'X';
      for (t = 0; t < 2; t++) {
        for (k = 0; k < 4; k++) {
          x[2] = x[t] + px[k];
          y[2] = y[t] + py[k];
          if (!inside(x[2], y[2])) continue;
          if (a[x[2]][y[2]] != '.') continue;
          if (alone(x[2], y[2])) a[x[2]][y[2]] = 'X';
        }
      }
      fill(x[0], y[0], getColor(x[0], y[0]));
    }
  for (i = 0; i < n; i++) printf("%s\n", a[i]);
  return 0;
}
