#include <bits/stdc++.h>
using namespace std;
char s[505][505];
int xx[] = {0, -1, 1, 0};
int yy[] = {-1, 0, 0, 1};
struct toado {
  int x, y;
  toado(){};
  toado(int _x, int _y) {
    x = _x;
    y = _y;
  }
};
toado mang[505 * 505];
int dd[505][505];
int n, m, k;
int dem = 0;
toado dau;
void nhap() {
  cin >> n >> m >> k;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) {
      cin >> s[i][j];
      if (s[i][j] == '.') {
        dau.x = i;
        dau.y = j;
      }
    }
}
bool kt(int x, int y) { return x >= 1 && x <= n && y >= 1 && y <= m; }
void BFS() {
  int l = 1;
  mang[++dem] = dau;
  dd[dau.x][dau.y] = 1;
  while (l <= dem) {
    int x = mang[l].x;
    int y = mang[l].y;
    for (int huong = 0; huong <= 3; huong++) {
      int h = x + xx[huong];
      int k = y + yy[huong];
      if (kt(h, k) && dd[h][k] == 0 && s[h][k] == '.') {
        mang[++dem] = toado(h, k);
        dd[h][k] = 1;
      }
    }
    l++;
  }
}
void xuli() {
  BFS();
  for (int i = dem; i >= dem - k + 1; i--) {
    int x = mang[i].x;
    int y = mang[i].y;
    s[x][y] = 'X';
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) cout << s[i][j];
    cout << endl;
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  nhap();
  xuli();
}
