#include <bits/stdc++.h>
using namespace std;
char map1[2005][2005];
bool check(int x, int y) {
  if (map1[x][y] != '*') return false;
  if (map1[x - 1][y] == '.' && map1[x - 1][y - 1] == '.' &&
      map1[x][y - 1] == '.') {
    map1[x][y] = '.';
    check(x - 1, y);
    check(x, y - 1);
    check(x, y + 1);
    check(x + 1, y);
    check(x - 1, y + 1);
    check(x - 1, y - 1);
    check(x + 1, y + 1);
    check(x + 1, y - 1);
    return true;
  } else if (map1[x - 1][y] == '.' && map1[x - 1][y + 1] == '.' &&
             map1[x][y + 1] == '.') {
    map1[x][y] = '.';
    check(x - 1, y);
    check(x, y - 1);
    check(x, y + 1);
    check(x + 1, y);
    check(x - 1, y + 1);
    check(x - 1, y - 1);
    check(x + 1, y + 1);
    check(x + 1, y - 1);
    return true;
  } else if (map1[x + 1][y] == '.' && map1[x + 1][y - 1] == '.' &&
             map1[x][y - 1] == '.') {
    map1[x][y] = '.';
    check(x - 1, y);
    check(x, y - 1);
    check(x, y + 1);
    check(x + 1, y);
    check(x - 1, y + 1);
    check(x - 1, y - 1);
    check(x + 1, y + 1);
    check(x + 1, y - 1);
    return true;
  } else if (map1[x + 1][y] == '.' && map1[x + 1][y + 1] == '.' &&
             map1[x][y + 1] == '.') {
    map1[x][y] = '.';
    check(x - 1, y);
    check(x, y - 1);
    check(x, y + 1);
    check(x + 1, y);
    check(x - 1, y + 1);
    check(x - 1, y - 1);
    check(x + 1, y + 1);
    check(x + 1, y - 1);
    return true;
  } else
    return false;
}
int main() {
  int n, m;
  scanf("%d %d", &n, &m);
  int cnt = 0;
  for (int i = 1; i <= n; i++) {
    scanf("%s", map1[i] + 1);
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      if (map1[i][j] == '*') check(i, j);
    }
  }
  for (int i = 1; i <= n; i++) {
    printf("%s\n", map1[i] + 1);
  }
}
