#include <bits/stdc++.h>
using namespace std;
bool a[50][50], b[50][50];
int n, m;
int cc = 0;
void rec(int x, int y) {
  b[x][y] = true;
  cc++;
  if (x - 1 > 0 && a[x - 1][y] && !b[x - 1][y]) rec(x - 1, y);
  if (x + 1 < n && a[x + 1][y] && !b[x + 1][y]) rec(x + 1, y);
  if (y - 1 > 0 && a[x][y - 1] && !b[x][y - 1]) rec(x, y - 1);
  if (y + 1 < m && a[x][y + 1] && !b[x][y + 1]) rec(x, y + 1);
}
void recc(int x, int y) {
  a[x][y] = false;
  if (x - 1 > 0 && a[x - 1][y]) recc(x - 1, y);
  if (x + 1 < n && a[x + 1][y]) recc(x + 1, y);
  if (y - 1 > 0 && a[x][y - 1]) recc(x, y - 1);
  if (y + 1 < m && a[x][y + 1]) recc(x, y + 1);
}
int main() {
  int k;
  cin >> n >> m >> k;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      char x;
      cin >> x;
      a[i][j] = (x == '.');
      b[i][j] = false;
    }
  for (int i = 0; i < n; i++) {
    if (a[i][0] && !b[i][0]) rec(i, 0);
    if (a[i][m - 1] && !b[i][m - 1]) rec(i, m - 1);
  }
  for (int j = 0; j < m; j++) {
    if (a[0][j] && !b[0][j]) rec(0, j);
    if (a[n - 1][j] && !b[n - 1][j]) rec(n - 1, j);
  }
  vector<int> x, y, z;
  int w = 0;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (a[i][j] && !b[i][j]) {
        cc = 0;
        rec(i, j);
        x.push_back(i);
        y.push_back(j);
        z.push_back(cc);
        w++;
      }
  for (int i = 0; i < w - 1; i++)
    for (int j = i + 1; j < w; j++)
      if (z[i] > z[j]) {
        swap(z[i], z[j]);
        swap(x[i], x[j]);
        swap(y[i], y[j]);
      }
  int ans = 0;
  for (int i = 0; i < w - k; i++) {
    ans += z[i];
    recc(x[i], y[i]);
  }
  cout << ans << endl;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      cout << (a[i][j] ? '.' : '*');
      if (j == m - 1) cout << endl;
    }
  return 0;
}
