#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:16777216")
using namespace std;
const double PI = acos(-1.0);
int m, n, cnt[1011][1011];
char a[1011][1011];
bool mark[300];
const int di[4] = {-1, 1, 0, 0};
const int dj[4] = {0, 0, -1, 1};
int now;
pair<int, int> x[100];
bool inside(int i, int j) {
  if (i < 0 || j < 0) return false;
  if (i > m || j > n) return false;
  return true;
}
char getColor() {
  for (int cur = ('0'), _b = ('9'); cur <= _b; cur++) mark[cur] = false;
  for (int p = (1), _b = (now); p <= _b; p++) {
    for (int dir = 0, _a = (4); dir < _a; dir++) {
      int i = x[p].first + di[dir];
      int j = x[p].second + dj[dir];
      if (a[i][j] >= '0' && a[i][j] <= '9') mark[a[i][j]] = true;
    }
  }
  char c = '0';
  while (mark[c]) c++;
  return c;
}
bool check(char c) {
  c = getColor();
  for (int p = (1), _b = (now); p <= _b; p++)
    if (a[x[p].first][x[p].second] != '.') return false;
  bool ok = true;
  for (int p = (1), _b = (now); p <= _b; p++) a[x[p].first][x[p].second] = c;
  for (int p = (1), _b = (now); p <= _b; p++) {
    int i = x[p].first, j = x[p].second;
    for (int dir = 0, _a = (4); dir < _a; dir++) {
      int ii = i + di[dir], jj = j + dj[dir];
      if (a[ii][jj] == '.') {
        cnt[ii][jj]--;
        if (!cnt[ii][jj]) ok = false;
      }
    }
  }
  if (!ok) {
    for (int p = (1), _b = (now); p <= _b; p++) {
      int i = x[p].first, j = x[p].second;
      for (int dir = 0, _a = (4); dir < _a; dir++) {
        int ii = i + di[dir], jj = j + dj[dir];
        if (a[ii][jj] == '.') {
          cnt[ii][jj]++;
          if (!cnt[ii][jj]) ok = false;
        }
      }
    }
    for (int p = (1), _b = (now); p <= _b; p++)
      a[x[p].first][x[p].second] = '.';
  }
  return ok;
}
int main() {
  cin >> m >> n;
  for (int i = (1), _b = (m); i <= _b; i++)
    for (int j = (1), _b = (n); j <= _b; j++) cin >> a[i][j];
  for (int i = (1), _b = (m); i <= _b; i++)
    for (int j = (1), _b = (n); j <= _b; j++)
      if (a[i][j] == '.') {
        cnt[i][j] = 0;
        for (int dir = 0, _a = (4); dir < _a; dir++) {
          int ii = i + di[dir], jj = j + dj[dir];
          if (inside(ii, jj) && a[ii][jj] == '.') cnt[i][j]++;
        }
        if (!cnt[i][j]) {
          puts("-1");
          return 0;
        }
      } else
        cnt[i][j] = -1;
  for (int i = (1), _b = (m); i <= _b; i++)
    for (int j = (1), _b = (n); j <= _b; j++)
      if (a[i][j] == '.') {
        char c;
        now = 2;
        x[1] = make_pair(i, j);
        x[2] = make_pair(i, j + 1);
        if (check(c)) continue;
        now = 2;
        x[1] = make_pair(i, j);
        x[2] = make_pair(i + 1, j);
        if (check(c)) continue;
        now = 3;
        x[1] = make_pair(i, j);
        x[2] = make_pair(i, j + 1);
        x[3] = make_pair(i, j + 2);
        if (check(c)) continue;
        now = 3;
        x[1] = make_pair(i, j);
        x[2] = make_pair(i + 1, j);
        x[3] = make_pair(i + 2, j);
        if (check(c)) continue;
        now = 3;
        x[1] = make_pair(i, j);
        x[2] = make_pair(i, j + 1);
        x[3] = make_pair(i + 1, j);
        if (check(c)) continue;
        now = 3;
        x[1] = make_pair(i, j);
        x[2] = make_pair(i, j + 1);
        x[3] = make_pair(i + 1, j + 1);
        if (check(c)) continue;
        now = 3;
        x[1] = make_pair(i, j);
        x[2] = make_pair(i + 1, j);
        x[3] = make_pair(i + 1, j + 1);
        if (check(c)) continue;
        now = 3;
        x[1] = make_pair(i, j);
        x[2] = make_pair(i + 1, j - 1);
        x[3] = make_pair(i + 1, j);
        if (check(c)) continue;
        now = 4;
        x[1] = make_pair(i, j);
        x[2] = make_pair(i, j + 1);
        x[3] = make_pair(i, j + 2);
        x[4] = make_pair(i + 1, j + 1);
        if (check(c)) continue;
        x[1] = make_pair(i, j);
        x[2] = make_pair(i + 1, j - 1);
        x[3] = make_pair(i + 1, j);
        x[4] = make_pair(i + 2, j);
        if (check(c)) continue;
        x[1] = make_pair(i, j);
        x[2] = make_pair(i + 1, j);
        x[3] = make_pair(i + 1, j + 1);
        x[4] = make_pair(i + 2, j);
        if (check(c)) continue;
        x[1] = make_pair(i, j);
        x[2] = make_pair(i + 1, j - 1);
        x[3] = make_pair(i + 1, j);
        x[4] = make_pair(i + 1, j + 1);
        if (check(c)) continue;
        now = 5;
        x[1] = make_pair(i, j);
        x[2] = make_pair(i + 1, j - 1);
        x[3] = make_pair(i + 1, j);
        x[4] = make_pair(i + 1, j + 1);
        x[5] = make_pair(i + 2, j);
        if (check(c)) continue;
        puts("-1");
        return 0;
      }
  for (int i = (1), _b = (m); i <= _b; i++) {
    for (int j = (1), _b = (n); j <= _b; j++) cout << a[i][j];
    puts("");
  }
  return 0;
}
