#include <bits/stdc++.h>
using namespace std;
vector<vector<long long> > dirs = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
void dfs(vector<vector<long long> > &v, int x, int y, int &k) {
  if (v[x][y] != 1) return;
  v[x][y] = 2;
  for (auto i : dirs)
    if (v[x + i[0]][y + i[1]] == 1) dfs(v, x + i[0], y + i[1], k);
  if (k) {
    v[x][y] = -1;
    k--;
  }
}
int main() {
  int n, m, k;
  cin >> n >> m >> k;
  vector<vector<long long> > v(n + 2, vector<long long>(m + 2, 0));
  for (long long i = 0; i < n; i++) {
    string s;
    cin >> s;
    for (long long j = 0; j < m; j++)
      if (s[j] == '.') v[i + 1][j + 1] = 1;
  }
  for (long long i = 1; i < n + 1; i++)
    if (k)
      for (long long j = 1; j < m + 1; j++)
        if (k) dfs(v, i, j, k);
  for (long long i = 1; i < n + 1; i++) {
    for (long long j = 1; j < m + 1; j++) {
      if (!v[i][j])
        cout << '#';
      else if (v[i][j] == -1)
        cout << 'X';
      else
        cout << '.';
    }
    cout << endl;
  }
  return 0;
}
