#include <bits/stdc++.h>
using namespace std;
int compare(const void *a, const void *b) {
  int *x = (int *)a;
  int *y = (int *)b;
  if (x[0] == y[0]) {
    if (x[1] == y[1]) return x[2] - y[2];
    return x[1] - y[1];
  }
  return y[0] - x[0];
}
string a[502];
int n, m, v[502][502], st[502][502], et[502][502], tm = 0;
int dfs(int x, int y) {
  if (x >= 0 && x < n && y >= 0 && y < m) {
    if ((v[x][y] == 1) || (a[x][y] == '#')) return 0;
    v[x][y] = 1;
    st[x][y] = tm;
    tm++;
    dfs(x + 1, y);
    dfs(x - 1, y);
    dfs(x, y + 1);
    dfs(x, y - 1);
    et[x][y] = tm;
  }
  return 0;
}
int s[300002][3];
int main() {
  int i, k, j;
  scanf("%d", &n);
  ;
  scanf("%d", &m);
  ;
  scanf("%d", &k);
  ;
  for (i = 0; i < n; i++) cin >> a[i];
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++)
      if (a[i][j] == '.') {
        dfs(i, j);
        break;
      }
    if (j != m) break;
  }
  int cnt = 0;
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
      if (a[i][j] == '.') {
        s[cnt][0] = st[i][j];
        s[cnt][1] = i;
        s[cnt][2] = j;
        cnt++;
      }
    }
  }
  qsort(s, cnt, 3 * sizeof(int), compare);
  for (i = 0; i < k; i++) {
    int x = s[i][1];
    int y = s[i][2];
    a[x][y] = 'X';
  }
  for (i = 0; i < n; i++) cout << a[i] << endl;
  return 0;
}
