#include <bits/stdc++.h>
using namespace std;
int n, m, k;
char s[501][501];
bool vis[501][501];
int ix[] = {1, -1, 0, 0};
int jx[] = {0, 0, 1, -1};
bool in_range(int i, int j) { return (i >= 0 && i < n && j >= 0 && j < m); }
void flood_fill(int i, int j) {
  vis[i][j] = 1;
  for (int d = 0; d < int(4); d++) {
    int u = i + ix[d];
    int v = j + jx[d];
    if (in_range(u, v) && s[u][v] == '.' && !vis[u][v]) flood_fill(u, v);
  }
  if (!k) return;
  s[i][j] = 'X';
  k--;
}
int main() {
  cin >> n >> m >> k;
  for (int i = 0; i < int(n); i++)
    for (int j = 0; j < int(m); j++) cin >> s[i][j], vis[i][j] = 0;
  for (int i = 0; i < int(n); i++) {
    for (int j = 0; j < int(m); j++) {
      if (!k) break;
      if (s[i][j] == '.') flood_fill(i, j);
    }
    if (!k) break;
  }
  for (int i = 0; i < int(n); i++) {
    for (int j = 0; j < int(m); j++) cout << s[i][j];
    cout << endl;
  }
  return 0;
}
