#include <bits/stdc++.h>
using namespace std;
int inf = 2147483647;
const long long ll = 9223372036854775807;
int a, b, c;
char A[505][505] = {};
int now = 0;
int vis[505][505] = {};
queue<pair<int, int> > num;
vector<pair<int, int> > ans;
void bfs(int i1, int j1) {
  if (now == c) {
    return;
  }
  vis[i1][j1] = 1;
  while (!num.empty()) {
    pair<int, int> tmp = num.front();
    num.pop();
    int i = tmp.first, j = tmp.second;
    int sum = 0;
    if (i - 1 >= 0 && !vis[i - 1][j] && A[i - 1][j] == '.') {
      num.push(make_pair(i - 1, j));
      ans.push_back(make_pair(i - 1, j));
      vis[i - 1][j] = 1;
    }
    if (i + 1 < a && !vis[i + 1][j] && A[i + 1][j] == '.') {
      num.push(make_pair(i + 1, j));
      ans.push_back(make_pair(i + 1, j));
      vis[i + 1][j] = 1;
    }
    if (j - 1 >= 0 && !vis[i][j - 1] && A[i][j - 1] == '.') {
      num.push(make_pair(i, j - 1));
      ans.push_back(make_pair(i, j - 1));
      vis[i][j - 1] = 1;
    }
    if (j + 1 < b && !vis[i][j + 1] && A[i][j + 1] == '.') {
      num.push(make_pair(i, j + 1));
      ans.push_back(make_pair(i, j + 1));
      vis[i][j + 1] = 1;
    }
  }
}
int main() {
  while (cin >> a >> b >> c) {
    for (int i = 0; i < a; i++) {
      cin >> A[i];
    }
    int ok = 0;
    for (int i = 0; i < a && !ok; i++) {
      for (int j = 0; j < b && !ok; j++) {
        if (A[i][j] == '.') {
          num.push(make_pair(i, j));
          ans.push_back(make_pair(i, j));
          bfs(i, j);
          ok = 1;
        }
      }
    }
    for (int i = 0; i < c; i++) {
      pair<int, int> tmp = ans.back();
      A[tmp.first][tmp.second] = 'X';
      ans.pop_back();
    }
    for (int i = 0; i < a; i++) {
      cout << A[i] << '\n';
    }
  }
  return 0;
}
