#include <bits/stdc++.h>
using namespace std;
long long mod = 1e9 + 7;
string char_to_str(char c) {
  string tem(1, c);
  return tem;
}
long long max(long long a, long long b) {
  if (a > b) {
    return a;
  }
  return b;
}
long long min(long long a, long long b) {
  if (a < b) {
    return a;
  }
  return b;
}
long long n, m, k, res;
void dfs(char a[][501], long long x, long long y) {
  if (res < 1) {
    return;
  }
  res--;
  a[x][y] = 'V';
  if (x > 0 && a[x - 1][y] == '.') {
    dfs(a, x - 1, y);
  }
  if (x < n - 1 && a[x + 1][y] == '.') {
    dfs(a, x + 1, y);
  }
  if (y > 0 && a[x][y - 1] == '.') {
    dfs(a, x, y - 1);
  }
  if (y < m - 1 && a[x][y + 1] == '.') {
    dfs(a, x, y + 1);
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  ;
  cin >> n >> m >> k;
  long long sum = 0;
  char a[n][501];
  long long b[2];
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < m; ++j) {
      cin >> a[i][j];
      if (a[i][j] == '.') {
        b[0] = i;
        b[1] = j;
        sum++;
      }
    }
  }
  res = sum - k;
  dfs(a, b[0], b[1]);
  for (long long i = 0; i < n; i++) {
    for (long long j = 0; j < m; j++) {
      if (a[i][j] == 'V') {
        cout << '.';
      } else if (a[i][j] == '.') {
        cout << 'X';
      } else {
        cout << a[i][j];
      }
    }
    cout << endl;
  }
  return 0;
}
