#include <bits/stdc++.h>
using namespace std;
vector<vector<char>> g;
int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
int bfs1(int xs, int ys) {
  int res = 1;
  queue<pair<int, int>> q;
  q.push(make_pair(xs, ys));
  g[xs][ys] = 'X';
  while (!q.empty()) {
    int x = q.front().first, y = q.front().second;
    q.pop();
    for (int i = 0; i < 4; ++i)
      if (g[x + dx[i]][y + dy[i]] == '.') {
        g[x + dx[i]][y + dy[i]] = 'X';
        q.push(make_pair(x + dx[i], y + dy[i]));
        ++res;
      }
  }
  return res;
}
void bfs2(int xs, int ys, int k) {
  queue<pair<int, int>> q;
  q.push(make_pair(xs, ys));
  g[xs][ys] = '.';
  --k;
  if (k == 0) return;
  while (!q.empty()) {
    int x = q.front().first, y = q.front().second;
    q.pop();
    for (int i = 0; i < 4; ++i)
      if (g[x + dx[i]][y + dy[i]] == 'X') {
        q.push(make_pair(x + dx[i], y + dy[i]));
        g[x + dx[i]][y + dy[i]] = '.';
        --k;
        if (k == 0) return;
      }
  }
}
int main() {
  int n, m, k;
  cin >> n >> m >> k;
  g.resize(n + 2, vector<char>(m + 2, '#'));
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j) cin >> g[i][j];
  for (int i = 1; i <= n; ++i) {
    bool b = 0;
    for (int j = 1; j <= m; ++j)
      if (g[i][j] == '.') {
        int s = bfs1(i, j);
        bfs2(i, j, s - k);
        b = 1;
        break;
      }
    if (b) break;
  }
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= m; ++j) cout << g[i][j];
    cout << endl;
  }
  return 0;
}
