#include <bits/stdc++.h>
using namespace std;
int R, C, K;
vector<string> M;
int dr[] = {-1, 1, 0, 0};
int dc[] = {0, 0, 1, -1};
int f[501][501];
int cnt = 0;
void dfs(int r, int c) {
  f[r][c] = ++cnt;
  for (int i = 0; i < int(4); ++i) {
    int nr = r + dr[i];
    int nc = c + dc[i];
    if (nr >= 0 && nr < R && nc >= 0 && nc < C && M[nr][nc] == '.' &&
        f[nr][nc] == 0) {
      dfs(nr, nc);
    }
  }
}
void start() {
  cin >> R >> C >> K;
  string line;
  for (int r = 1; r <= int(R); ++r) {
    cin >> line;
    M.push_back(line);
  }
  memset(f, 0, sizeof(f));
  for (int i = 0; i < int(R); ++i) {
    for (int j = 0; j < int(M[i].size()); ++j) {
      if (f[i][j] == 0 && M[i][j] == '.') {
        dfs(i, j);
        break;
      }
    }
  }
  for (int i = 0; i < int(R); ++i) {
    for (int j = 0; j < int(C); ++j) {
      if (f[i][j] >= cnt - K + 1)
        cout << 'X';
      else
        cout << M[i][j];
    }
    cout << endl;
  }
}
int main(int argc, char** argv) {
  start();
  return 0;
}
