#include <bits/stdc++.h>
using namespace std;
int a, s, d[2003][2003], f, g, h, j, k, l, i, n, m;
queue<pair<int, int> > q;
string x[2003];
void mn(int i1, int i2) {
  d[i1][i2]--;
  d[i1 + 1][i2]--;
  d[i1][i2 + 1]--;
  d[i1 + 1][i2 + 1]--;
  if (d[i1][i2] == 1 && i2 > 0 && i1 > 0) q.push({i1, i2});
  if (d[i1 + 1][i2] == 1 && i2 > 0 && i1 < n - 1) q.push({i1 + 1, i2});
  if (d[i1][i2 + 1] == 1 && i1 > 0 && i2 < m - 1) q.push({i1, i2 + 1});
  if (d[i1 + 1][i2 + 1] == 1 && i1 < n - 1 && i2 < m - 1)
    q.push({i1 + 1, i2 + 1});
}
int main() {
  cin >> n >> m;
  for (i = 0; i < n; i++) {
    cin >> x[i];
    for (a = 0; a < m; a++) {
      if (x[i][a] == '*') {
        d[i][a]++;
        d[i + 1][a]++;
        d[i][a + 1]++;
        d[i + 1][a + 1]++;
      }
    }
  }
  for (i = 1; i < n; i++) {
    for (a = 1; a < m; a++) {
      if (d[i][a] == 1) q.push({i, a});
    }
  }
  while (!q.empty()) {
    f = q.front().first;
    g = q.front().second;
    q.pop();
    if (x[f][g] == '*') {
      x[f][g] = '.';
      mn(f, g);
    }
    if (x[f - 1][g] == '*') {
      x[f - 1][g] = '.';
      mn(f - 1, g);
    }
    if (x[f][g - 1] == '*') {
      x[f][g - 1] = '.';
      mn(f, g - 1);
    }
    if (x[f - 1][g - 1] == '*') {
      x[f - 1][g - 1] = '.';
      mn(f - 1, g - 1);
    }
  }
  for (i = 0; i < n; i++) {
    cout << x[i] << endl;
  }
}
