#include <bits/stdc++.h>
using namespace std;
long long GCD(long long a, long long b) { return (a) ? GCD(b % a, a) : b; }
long long LCM(long long a, long long b) { return a * b / GCD(a, b); }
double power(double a, long long b) {
  double x = 1;
  for (int i = 0; i < b; i++) {
    x = x * a;
  }
  return x;
}
int n, m, k;
char grid[509][509];
int visited[509][509];
int dx[4] = {1, -1, 0, 0};
int dy[4] = {0, 0, 1, -1};
void dfs(int i, int j) {
  if (visited[i][j] || i < 0 || i >= n || j < 0 || j >= m || grid[i][j] != '.')
    return;
  visited[i][j] = 1;
  for (int l = 0; l < 4; l++) dfs(i + dx[l], j + dy[l]);
  if (k > 0) {
    k--;
    grid[i][j] = 'X';
  }
}
int main() {
  cin >> n >> m >> k;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) cin >> grid[i][j];
  bool flag = 0;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if (grid[i][j] == '.') {
        dfs(i, j);
        break;
        flag = 1;
      }
    }
    if (flag) break;
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      cout << grid[i][j];
    }
    cout << endl;
  }
  return 0;
}
