#include <bits/stdc++.h>
using namespace std;
const int MAX = 502;
int n, m, k;
int maze[MAX][MAX];
void traverseGraph(int x, int y) {
  maze[x][y] = 2;
  if (maze[x][y + 1] == 1) traverseGraph(x, y + 1);
  if (maze[x][y - 1] == 1) traverseGraph(x, y - 1);
  if (maze[x + 1][y] == 1) traverseGraph(x + 1, y);
  if (maze[x - 1][y] == 1) traverseGraph(x - 1, y);
  if (k > 0) maze[x][y] = -1, k--;
}
void findGraphs() {
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      if (maze[i][j] == 1) traverseGraph(i, j);
    }
  }
}
void findConnectedNode(int x, int y, int& nx, int& ny) {
  if (maze[x][y + 1] == 2) nx = x, ny = y + 1;
  if (maze[x][y - 1] == 2) nx = x, ny = y - 1;
  if (maze[x + 1][y] == 2) nx = x + 1, ny = y;
  if (maze[x - 1][y] == 2) nx = x - 1, ny = y;
}
int main() {
  cin >> n >> m >> k;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      char c;
      cin >> c;
      if (c == '.') maze[i][j] = 1;
    }
  }
  findGraphs();
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      if (maze[i][j] == 0)
        cout << "#";
      else if (maze[i][j] == -1)
        cout << "X";
      else
        cout << ".";
    }
    cout << endl;
  }
  return 0;
}
