#include <bits/stdc++.h>
using namespace std;
int n, m, livre = 0, k;
char mapa[505][505];
set<pair<int, int>> visited;
void dfs(int linha, int coluna) {
  if (visited.count({linha, coluna}) || mapa[linha][coluna] != '.' ||
      visited.size() >= livre - k) {
    return;
  }
  visited.insert({linha, coluna});
  if (linha - 1 >= 0) dfs(linha - 1, coluna);
  if (linha + 1 < n) dfs(linha + 1, coluna);
  if (coluna - 1 >= 0) dfs(linha, coluna - 1);
  if (coluna + 1 < m) dfs(linha, coluna + 1);
  return;
}
int main() {
  pair<int, int> inicio{-1, -1};
  cin >> n >> m >> k;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      cin >> mapa[i][j];
      if (mapa[i][j] == '.') {
        livre++;
        if (inicio.first == -1) {
          inicio = {i, j};
        }
      }
    }
  }
  dfs(inicio.first, inicio.second);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if (!visited.count({i, j}) and mapa[i][j] == '.') {
        cout << 'X';
      } else {
        cout << mapa[i][j];
      }
    }
    cout << endl;
  }
  return 0;
}
