#include <bits/stdc++.h>
using namespace std;
char mat[505][505];
struct poz {
  int x, y;
};
queue<poz> q;
int main() {
  int n, m, i, j, k, s = 0, nr = 1;
  poz a, b;
  a.x = 0;
  a.y = 0;
  scanf("%d%d%d\n", &n, &m, &k);
  for (i = 1; i <= n; ++i) {
    for (j = 1; j <= m; ++j) {
      scanf("%c", &mat[i][j]);
      if (mat[i][j] == '.') {
        a.x = i;
        a.y = j;
        ++s;
      }
    }
    scanf("\n");
  }
  mat[a.x][a.y] = '1';
  q.push(a);
  k = s - k;
  if (k == 1) {
    for (i = 1; i <= n; ++i) {
      for (j = 1; j <= m; ++j) {
        if (mat[i][j] == '1') printf(".");
        if (mat[i][j] == '.') printf("X");
        if (mat[i][j] == '#') printf("#");
      }
      printf("\n");
    }
    return 0;
  }
  while (!q.empty()) {
    b = q.front();
    if (mat[b.x][b.y - 1] == '.') {
      ++nr;
      mat[b.x][b.y - 1] = '1';
      a.x = b.x;
      a.y = b.y - 1;
      q.push(a);
      if (nr == k) {
        for (i = 1; i <= n; ++i) {
          for (j = 1; j <= m; ++j) {
            if (mat[i][j] == '1') printf(".");
            if (mat[i][j] == '.') printf("X");
            if (mat[i][j] == '#') printf("#");
          }
          printf("\n");
        }
        return 0;
      }
    }
    if (mat[b.x][b.y + 1] == '.') {
      ++nr;
      mat[b.x][b.y + 1] = '1';
      a.x = b.x;
      a.y = b.y + 1;
      q.push(a);
      if (nr == k) {
        for (i = 1; i <= n; ++i) {
          for (j = 1; j <= m; ++j) {
            if (mat[i][j] == '1') printf(".");
            if (mat[i][j] == '.') printf("X");
            if (mat[i][j] == '#') printf("#");
          }
          printf("\n");
        }
        return 0;
      }
    }
    if (mat[b.x - 1][b.y] == '.') {
      ++nr;
      mat[b.x - 1][b.y] = '1';
      a.x = b.x - 1;
      a.y = b.y;
      q.push(a);
      if (nr == k) {
        for (i = 1; i <= n; ++i) {
          for (j = 1; j <= m; ++j) {
            if (mat[i][j] == '1') printf(".");
            if (mat[i][j] == '.') printf("X");
            if (mat[i][j] == '#') printf("#");
          }
          printf("\n");
        }
        return 0;
      }
    }
    if (mat[b.x + 1][b.y] == '.') {
      ++nr;
      mat[b.x + 1][b.y] = '1';
      a.x = b.x + 1;
      a.y = b.y;
      q.push(a);
      if (nr == k) {
        for (i = 1; i <= n; ++i) {
          for (j = 1; j <= m; ++j) {
            if (mat[i][j] == '1') printf(".");
            if (mat[i][j] == '.') printf("X");
            if (mat[i][j] == '#') printf("#");
          }
          printf("\n");
        }
        return 0;
      }
    }
    q.pop();
  }
  return 0;
}
