#include <bits/stdc++.h>
using namespace std;
int n, m, k, dots, convert, c;
char a[502][502], re[502][502];
bool visited[502][502];
int dx[] = {0, 0, 1, -1};
int dy[] = {1, -1, 0, 0};
bool valid(int x, int y) {
  if (x <= 0 || y <= 0 || x > n || y > m || c >= convert) return false;
  return true;
}
void DFS(int x, int y) {
  if (!valid(x, y)) return;
  c++;
  a[x][y] = '.';
  if (valid(x + 1, y) && a[x + 1][y] == 'X') DFS(x + 1, y);
  if (valid(x - 1, y) && a[x - 1][y] == 'X') DFS(x - 1, y);
  if (valid(x, y + 1) && a[x][y + 1] == 'X') DFS(x, y + 1);
  if (valid(x, y - 1) && a[x][y - 1] == 'X') DFS(x, y - 1);
}
int main() {
  cin >> n >> m >> k;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      cin >> a[i][j];
      if (a[i][j] == '.') {
        a[i][j] = 'X';
        dots++;
      }
      re[i][j] = a[i][j];
    }
  }
  convert = dots - k;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      if (a[i][j] == 'X') {
        DFS(i, j);
        if (c == convert)
          break;
        else {
          c = 0;
          for (int ii = 1; ii <= n; ii++) {
            for (int jj = 1; jj <= m; jj++) {
              a[ii][jj] = re[ii][jj];
            }
          }
        }
      }
    }
    if (c == convert) break;
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) cout << a[i][j];
    cout << "\n";
  }
}
