#include <bits/stdc++.h>
using namespace std;
const long long maxn = 500 + 2;
long long n, m, k, h[maxn][maxn];
string second[maxn];
bool mark[maxn][maxn];
vector<pair<long long, pair<long long, long long> > > d;
void dfs(int x, int y) {
  mark[x][y] = 1;
  for (int i = -1; i <= 1; i++)
    for (int j = -1; j <= 1; j++) {
      if (i != 0 && j != 0) continue;
      if (x + i >= 0 && y + j >= 0 && x + i < n && y + j < m &&
          !mark[x + i][y + j] && second[x + i][y + j] != '#') {
        h[x + i][y + j] = h[x][y] + 1;
        d.push_back(make_pair(h[x + i][y + j], make_pair(x + i, y + j)));
        dfs(x + i, y + j);
      }
    }
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n >> m >> k;
  for (int i = 0; i < n; i++) cin >> second[i];
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (second[i][j] == '.') {
        d.push_back(make_pair(0, make_pair(i, j)));
        dfs(i, j);
        break;
      }
  sort(d.begin(), d.end());
  for (int i = d.size() - 1; i >= d.size() - k; i--) {
    second[d[i].second.first][d[i].second.second] = 'X';
  }
  for (int i = 0; i < n; i++) cout << second[i] << endl;
  return 0;
}
