#include <bits/stdc++.h>
using namespace std;
string s[505];
bool vis[505][505];
long long n, m, k;
bool chck(long long a, long long b) {
  if (a > 0 and s[a - 1][b] == '.') return 1;
  if (a < m - 1 and s[a + 1][b] == '.') return 1;
  if (b > 0 and s[a][b - 1] == '.') return 1;
  if (b < m - 1 and s[a][b + 1] == '.') return 1;
  return 0;
}
void dfs(long long a, long long b) {
  if (a < 0 or a > n - 1 or b < 0 or b > m - 1 or s[a][b] != '.' or vis[a][b])
    return;
  vis[a][b] = 1;
  dfs(a + 1, b);
  dfs(a - 1, b);
  dfs(a, b - 1);
  dfs(a, b + 1);
  if (k) {
    s[a][b] = 'X';
    k--;
  }
}
int main(void) {
  ios_base::sync_with_stdio(0);
  long long a, b, c, d, e, f;
  long long abc[100005];
  cin >> n >> m >> k;
  memset(vis, 0, sizeof(vis));
  for (a = 0; a < n; a++) cin >> s[a];
  for (a = 0; a < n; a++) {
    for (b = 0; b < m; b++) {
      if (s[a][b] == '.') break;
    }
    if (b < m) break;
  }
  dfs(a, b);
  for (a = 0; a < n; a++) cout << s[a] << endl;
  return 0;
}
