#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1010;
const int w[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
char mp[MAXN][MAXN];
bool vis[MAXN][MAXN];
int col[MAXN][MAXN], ctot;
int lab[MAXN * MAXN];
int n, m;
int remain;
void init() {
  scanf("%d%d", &n, &m);
  remain = 0;
  for (int i = 0; i < n; ++i) scanf("%s", mp[i]);
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j) remain += mp[i][j] == '.';
}
void color(int stx, int sty, bool used[]) {
  vis[stx][sty] = 1;
  for (int x, y, l = 0; l < 4; ++l) {
    x = stx + w[l][0];
    y = sty + w[l][1];
    if (!(0 <= (x) && (x) < n && 0 <= (y) && (y) < m) || mp[x][y] == '#' ||
        (col[x][y] == col[stx][sty] && vis[x][y]))
      continue;
    if (lab[col[x][y]] != -1) used[lab[col[x][y]]] = 1;
    if (col[x][y] == col[stx][sty]) color(x, y, used);
  }
}
void print() {
  bool used[10];
  memset(lab, 255, sizeof(lab));
  memset(vis, 0, sizeof(vis));
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j) {
      if (mp[i][j] == '#' || lab[col[i][j]] != -1) continue;
      memset(used, 0, sizeof(used));
      color(i, j, used);
      for (int l = 0; l < 10; ++l)
        if (!used[l]) {
          lab[col[i][j]] = l;
          break;
        }
    }
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j)
      if (mp[i][j] == '.') mp[i][j] = '0' + lab[col[i][j]];
  for (int i = 0; i < n; ++i) puts(mp[i]);
}
void solve() {
  ctot = 0;
  memset(col, 0, sizeof(col));
  memset(vis, 0, sizeof(vis));
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j) {
      if (col[i][j] || mp[i][j] == '#') continue;
      for (int x, y, l = 0; l < 4; ++l) {
        x = i + w[l][0];
        y = j + w[l][1];
        if (!(0 <= (x) && (x) < n && 0 <= (y) && (y) < m) || mp[x][y] == '#' ||
            vis[x][y])
          continue;
        vis[i][j] = vis[x][y] = 1;
        col[i][j] = col[x][y] = ++ctot;
        remain -= 2;
        break;
      }
    }
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j) {
      if (vis[i][j] || mp[i][j] == '#') continue;
      for (int x, y, l = 0; l < 4; ++l) {
        x = i + w[l][0];
        y = j + w[l][1];
        if (!(0 <= (x) && (x) < n && 0 <= (y) && (y) < m) || !vis[x][y])
          continue;
        col[i][j] = col[x][y];
        --remain;
        break;
      }
    }
  if (remain)
    puts("-1");
  else
    print();
}
int main() {
  init();
  solve();
  return 0;
}
