#include <bits/stdc++.h>
using namespace std;
int n, m;
char s[1001][1001];
int dx[1001][1001], dy[1001][1001];
int px[] = {0, 0, 1, -1};
int py[] = {-1, 1, 0, 0};
char get(int x, int y) {
  if (x < 0 || x >= n || y < 0 || y >= m) return '#';
  return s[x][y];
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < n; ++i) scanf("%s", s[i]);
  memset(dx, 0, sizeof(dx));
  memset(dy, 0, sizeof(dy));
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j)
      if (s[i][j] == '.') {
        if (get(i - 1, j) == '.') {
          dx[i][j] = -1;
          dx[i - 1][j] = 1;
          s[i][j] = s[i - 1][j] = '*';
        } else {
          if (get(i, j - 1) == '.') {
            dy[i][j] = -1;
            dy[i][j - 1] = 1;
            s[i][j] = s[i][j - 1] = '*';
          }
        }
      }
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j)
      if (s[i][j] == '*') {
        int ax = i, ay = j;
        int bx = i + dx[i][j], by = j + dy[i][j];
        bool f[10];
        memset(f, 0, sizeof(f));
        vector<pair<int, int> > V;
        for (int p = 0; p < 4; ++p) {
          int tx = ax + px[p];
          int ty = ay + py[p];
          if (s[tx][ty] == '.') {
            V.push_back(make_pair(tx, ty));
            for (int pp = 0; pp < 4; ++pp) {
              int cx = tx + px[pp];
              int cy = ty + py[pp];
              if (isdigit(get(cx, cy))) f[get(cx, cy) - '0'] = 1;
            }
          }
          if (isdigit(get(tx, ty))) f[get(tx, ty) - '0'] = 1;
        }
        for (int p = 0; p < 4; ++p) {
          int tx = bx + px[p];
          int ty = by + py[p];
          if (s[tx][ty] == '.') {
            V.push_back(make_pair(tx, ty));
            for (int pp = 0; pp < 4; ++pp) {
              int cx = tx + px[pp];
              int cy = ty + py[pp];
              if (isdigit(get(cx, cy))) f[get(cx, cy) - '0'] = 1;
            }
          }
          if (isdigit(get(tx, ty))) f[get(tx, ty) - '0'] = 1;
        }
        char c;
        for (c = '0'; c <= '9'; ++c)
          if (!f[c - '0']) break;
        s[ax][ay] = s[bx][by] = c;
        for (vector<pair<int, int> >::iterator it = V.begin(); it != V.end();
             ++it)
          s[it->first][it->second] = c;
      }
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j)
      if (s[i][j] == '.') {
        printf("-1\n");
        return 0;
      }
  for (int i = 0; i < n; ++i) printf("%s\n", s[i]);
}
