#include <bits/stdc++.h>
using namespace std;
const long long N = 2e5 + 5;
long long n, m, k;
string s[505];
bool vis[505][505];
long long cnt = 0;
void dfs(long long i, long long j) {
  if (cnt == k) return;
  if (vis[i][j]) return;
  cnt--;
  vis[i][j] = 1;
  if (i + 1 < n && s[i + 1][j] == '.') dfs(i + 1, j);
  if (i - 1 >= 0 && s[i - 1][j] == '.') dfs(i - 1, j);
  if (j + 1 < m && s[i][j + 1] == '.') dfs(i, j + 1);
  if (j - 1 >= 0 && s[i][j - 1] == '.') dfs(i, j - 1);
}
void test_case() {
  cin >> n >> m >> k;
  long long ii, jj;
  for (long long i = 0; i < n; i++) {
    cin >> s[i];
    for (long long j = 0; j < m; j++) {
      if (s[i][j] == '.') {
        ii = i, jj = j;
        cnt++;
      }
    }
  }
  dfs(ii, jj);
  for (long long i = 0; i < n; i++) {
    for (long long j = 0; j < m; j++) {
      if (s[i][j] == '#')
        cout << s[i][j];
      else if (vis[i][j])
        cout << ".";
      else
        cout << "X";
    }
    cout << "\n";
  }
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long t = 1;
  for (long long i = 0; i < t; i++) {
    test_case();
  }
  return 0;
}
