#include <bits/stdc++.h>
using namespace std;
char arr[1001][1001];
bool vis[1005][1005];
vector<pair<int, int>> vp;
long long n, m, k;
bool isSafe(int x, int y) {
  if (x >= 0 and x < n and y >= 0 and y < m and !vis[x][y] and arr[x][y] == '.')
    return true;
  return false;
}
int dx[] = {-1, 1, 0, 0};
int dy[] = {0, 0, -1, 1};
void dfs(int x, int y) {
  vis[x][y] = true;
  for (int i = 0; i < 4; i++) {
    if (isSafe(x + dx[i], y + dy[i])) {
      dfs(dx[i] + x, dy[i] + y);
    }
  }
  vp.push_back({x, y});
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> n >> m >> k;
  memset(vis, false, sizeof vis);
  int x = 0, y = 0;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      cin >> arr[i][j];
      if (arr[i][j] == '.' and !x and !y) x = i, y = j;
    }
  dfs(x, y);
  for (auto it : vp) {
    if (k == 0) break;
    arr[it.first][it.second] = 'X';
    k--;
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) cout << arr[i][j];
    cout << endl;
  }
  return 0;
}
