#include <bits/stdc++.h>
using namespace std;
const int N = 2228;
queue<pair<int, int> > q;
bool fl;
int i, j, n, m;
char a[N][N];
bool us[N][N];
void add(int i, int j) {
  if (i < 0 || i >= n || j >= m || j < 0) return;
  if (a[i][j] == '.') return;
  if (us[i][j] == 1) return;
  fl = 0;
  if (i > 0 && j > 0)
    fl = fl ||
         a[i - 1][j] == '.' && a[i][j - 1] == '.' && a[i - 1][j - 1] == '.';
  if (i < n - 1 && j > 0)
    fl = fl ||
         a[i + 1][j] == '.' && a[i][j - 1] == '.' && a[i + 1][j - 1] == '.';
  if (i < n - 1 && j < m - 1)
    fl = fl ||
         a[i + 1][j] == '.' && a[i][j + 1] == '.' && a[i + 1][j + 1] == '.';
  if (i > 0 && j < m - 1)
    fl = fl ||
         a[i - 1][j] == '.' && a[i][j + 1] == '.' && a[i - 1][j + 1] == '.';
  if (fl) q.push(make_pair(i, j)), us[i][j] = 1;
}
int main() {
  scanf("%d %d\n", &n, &m);
  for (i = 0; i < n; i++) {
    gets(a[i]);
  }
  for (i = 0; i < n; i++)
    for (j = 0; j < m; j++) {
      add(i, j);
    }
  while (!q.empty()) {
    i = (q.front()).first;
    j = (q.front()).second;
    q.pop();
    a[i][j] = '.';
    add(i + 1, j + 1);
    add(i + 1, j - 1);
    add(i - 1, j - 1);
    add(i - 1, j + 1);
    add(i + 1, j);
    add(i, j - 1);
    add(i - 1, j);
    add(i, j + 1);
  }
  for (i = 0; i < n; i++) puts(a[i]);
  return 0;
}
