#include <bits/stdc++.h>
using namespace std;
int m, n, a;
char s[1005][1005];
bool yes;
int q[1005][2], rq, wq;
void inc(int x, int y) {
  for (int i = 0; i < 6; i++) {
    if ((y > 1) && (s[x][y - 2] == '0' + a)) a = (a + 1) % 9;
    if ((y > 0) && (s[x][y - 1] == '0' + a)) a = (a + 1) % 9;
    if ((x > 0) && (y > 0) && (s[x - 1][y - 1] == '0' + a)) a = (a + 1) % 9;
    if ((x > 0) && (s[x - 1][y] == '0' + a)) a = (a + 1) % 9;
    if ((x > 0) && (y + 1 < n) && (s[x - 1][y + 1] == '0' + a)) a = (a + 1) % 9;
    if ((x > 0) && (y + 2 < n) && (s[x - 1][y + 2] == '0' + a)) a = (a + 1) % 9;
  }
}
bool vis(int x, int y) {
  for (int i = 0; i < wq; i++)
    if ((q[i][0] == x) && (q[i][1] == y)) return true;
  return false;
}
void pro(int x, int y, char c) {
  if ((0 <= x) && (x < m) && (0 <= y) && (y < n) && (s[x][y] == c) &&
      (!vis(x, y))) {
    q[wq][0] = x;
    q[wq][1] = y;
    wq++;
  }
}
int bfs(int x, int y) {
  rq = wq = 0;
  q[wq][0] = x;
  q[wq][1] = y;
  wq++;
  while (rq != wq) {
    x = q[rq][0];
    y = q[rq][1];
    pro(x - 1, y, s[x][y]);
    pro(x + 1, y, s[x][y]);
    pro(x, y - 1, s[x][y]);
    pro(x, y + 1, s[x][y]);
    rq++;
  }
  return wq;
}
void col(int x, int y, char c) {
  rq = wq = 0;
  q[wq][0] = x;
  q[wq][1] = y;
  wq++;
  while (rq != wq) {
    x = q[rq][0];
    y = q[rq][1];
    pro(x - 1, y, s[x][y]);
    pro(x + 1, y, s[x][y]);
    pro(x, y - 1, s[x][y]);
    pro(x, y + 1, s[x][y]);
    s[x][y] = c;
    rq++;
  }
}
void solve(int x, int y, int z) {
  char c = s[x][y];
  if ((y + 1 < n) && (s[x][y + 1] == c)) {
    s[x][y] = s[x][y + 1] = '#';
    if ((y + 2 < n) && (s[x][y + 2] == c)) {
      int temp = bfs(x, y + 2);
      if (temp + 2 == z) {
        s[x][y] = s[x][y + 1] = '9';
        return;
      }
      if (temp < z - 2 - temp) {
        col(x, y + 2, '9');
        s[x][y] = s[x][y + 1] = '9';
      } else {
        col(x, y + 2, '9');
        s[x][y] = s[x][y + 1] = c;
      }
    } else {
      s[x][y] = s[x][y + 1] = '9';
      return;
    }
  } else {
    s[x][y] = s[x + 1][y] = '#';
    int temp1 = 0, temp2 = 0, temp3 = 0, temp4 = 0, ma = 0, mai = 1;
    if ((y + 1 < n) && (s[x][y + 1] == c)) {
      temp1 = bfs(x, y + 1);
      if (temp1 > ma) {
        ma = temp1;
        mai = 1;
      }
    }
    if (temp1 + 2 == z) {
      s[x][y] = s[x + 1][y] = '9';
      return;
    }
    if (temp1 == 0) {
      if ((y + 1 < n) && (s[x + 1][y + 1] == c)) {
        temp2 = bfs(x + 1, y + 1);
        if (temp2 > ma) {
          ma = temp2;
          mai = 2;
        }
      }
      if (temp2 + 2 == z) {
        s[x][y] = s[x + 1][y] = '9';
        return;
      }
    }
    if ((x + 2 < m) && (s[x + 2][y] == c)) {
      temp3 = bfs(x + 2, y);
      if (temp3 > ma) {
        ma = temp3;
        mai = 3;
      }
    }
    if (temp1 + temp2 + temp3 + 2 == z) {
      if (mai == 1) {
        if (temp2) col(x + 1, y + 1, '9');
        if (temp3) col(x + 2, y, '9');
      } else if (mai == 2) {
        if (temp1) col(x, y + 1, '9');
        if (temp3) col(x + 2, y, '9');
      } else {
        if (temp1) col(x, y + 1, '9');
        if (temp2) col(x + 1, y + 1, '9');
      }
      s[x][y] = s[x + 1][y] = '9';
      return;
    }
    if ((y > 0) && (s[x + 1][y - 1] == c)) {
      temp4 = bfs(x + 1, y - 1);
      if (temp4 > ma) {
        ma = temp4;
        mai = 4;
      }
    }
    if (mai == 1) {
      if (temp2) col(x + 1, y + 1, '9');
      if (temp3) col(x + 2, y, '9');
      if (temp4) col(x + 1, y - 1, '9');
    } else if (mai == 2) {
      if (temp1) col(x, y + 1, '9');
      if (temp3) col(x + 2, y, '9');
      if (temp4) col(x + 1, y - 1, '9');
    } else if (mai == 3) {
      if (temp1) col(x, y + 1, '9');
      if (temp2) col(x + 1, y + 1, '9');
      if (temp4) col(x + 1, y - 1, '9');
    } else {
      if (temp1) col(x, y + 1, '9');
      if (temp2) col(x + 1, y + 1, '9');
      if (temp3) col(x + 2, y, '9');
    }
    s[x][y] = s[x + 1][y] = '9';
    return;
  }
}
int main() {
  scanf("%d%d", &m, &n);
  for (int i = 0; i < m; i++) scanf("%s", s[i]);
  yes = true;
  a = 0;
  for (int i = 0; i < m; i++) {
    for (int j = 0; j < n; j++) {
      if (s[i][j] == '.') {
        if ((j + 1 < n) && (s[i][j + 1] == '.')) {
          inc(i, j);
          s[i][j] = s[i][j + 1] = '0' + a;
        } else if ((i + 1 < m) && (s[i + 1][j] == '.')) {
          inc(i, j);
          s[i][j] = s[i + 1][j] = '0' + a;
        } else if ((j + 1 < n) && (s[i][j + 1] != '#')) {
          s[i][j] = s[i][j + 1];
        } else if ((i + 1 < m) && (s[i + 1][j] != '#')) {
          s[i][j] = s[i + 1][j];
        } else if ((j > 0) && (s[i][j - 1] != '#')) {
          s[i][j] = s[i][j - 1];
        } else if ((i > 0) && (s[i - 1][j] != '#')) {
          s[i][j] = s[i - 1][j];
        } else {
          yes = false;
          break;
        }
      }
    }
  }
  if (!yes)
    printf("-1\n");
  else {
    for (int i = 0; i < m; i++) {
      for (int j = 0; j < n; j++) {
        if (s[i][j] != '#') {
          int temp = bfs(i, j);
          if (temp > 5) solve(i, j, temp);
        }
      }
    }
    for (int i = 0; i < m; i++) printf("%s\n", s[i]);
  }
  return 0;
}
