#include <bits/stdc++.h>
using namespace std;
const int mm = 550;
const int dx[] = {1, -1, 0, 0};
const int dy[] = {0, 0, 1, -1};
int n, m, k;
char g[mm][mm];
int vis[mm][mm];
queue<int> Q;
void bfs(int x, int y) {
  if (k == 0) return;
  int tx, ty, rx, ry, num, go_num;
  num = 0;
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j)
      if (g[i][j] == '.') ++num;
  memset(vis, 0, sizeof vis);
  Q.push(x * mm + y);
  go_num = 1;
  vis[x][y] = true;
  while (!Q.empty()) {
    int tz = Q.front();
    Q.pop();
    x = tz / mm;
    y = tz % mm;
    rx = x;
    ry = y;
    for (int i = 0; i < 4; ++i) {
      tx = x + dx[i];
      ty = y + dy[i];
      if (tx < 0 || tx >= n || ty < 0 || ty >= m || vis[tx][ty] == true ||
          g[tx][ty] == '#')
        continue;
      if (go_num + k == num) goto next;
      ++go_num;
      vis[tx][ty] = true;
      Q.push(tx * mm + ty);
    }
  }
next:
  while (!Q.empty()) Q.pop();
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j)
      if (g[i][j] == '.' && vis[i][j] == false) g[i][j] = 'X';
}
int main() {
  while (cin >> n >> m >> k) {
    for (int i = 0; i < n; ++i) cin >> g[i];
    for (int i = 0; i < n; ++i)
      for (int j = 0; j < m; ++j)
        if (g[i][j] == '.') {
          bfs(i, j);
          goto here;
        }
  here:
    for (int i = 0; i < n; ++i) cout << g[i] << endl;
  }
  return 0;
}
