#include <bits/stdc++.h>
using namespace std;
int vis[55][55], n, m, k, e = 0, ans = 0;
char a[55][55];
vector<pair<int, pair<int, int>>> v;
void DFS(int x, int y, int f) {
  if (f) a[x][y] = '*';
  e++;
  vis[x][y] = 1;
  if (x + 1 < n && !vis[x + 1][y] && a[x + 1][y] == '.') DFS(x + 1, y, f);
  if (y - 1 >= 0 && !vis[x][y - 1] && a[x][y - 1] == '.') DFS(x, y - 1, f);
  if (y + 1 < m && !vis[x][y + 1] && a[x][y + 1] == '.') DFS(x, y + 1, f);
  if (x - 1 >= 0 && !vis[x - 1][y] && a[x - 1][y] == '.') DFS(x - 1, y, f);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  cin >> n >> m >> k;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) cin >> a[i][j];
  }
  for (int i = 0; i < m; i++) {
    if (a[0][i] == '.' && !vis[0][i]) DFS(0, i, 0);
    if (a[n - 1][i] == '.' && !vis[n - 1][i]) DFS(n - 1, i, 0);
  }
  for (int i = 0; i < n; i++) {
    if (a[i][0] == '.' && !vis[i][0]) DFS(i, 0, 0);
    if (a[i][m - 1] == '.' && !vis[i][m - 1]) DFS(i, m - 1, 0);
  }
  for (int i = 1; i < n - 1; i++) {
    for (int j = 1; j < m - 1; j++) {
      if (a[i][j] == '.' && !vis[i][j]) {
        e = 0;
        DFS(i, j, 0);
        v.push_back(make_pair(e, make_pair(i, j)));
      }
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) vis[i][j] = 0;
  }
  sort(v.begin(), v.end());
  for (int i = 0; i < v.size() - k; i++) {
    DFS(v[i].second.first, v[i].second.second, 1);
    ans += v[i].first;
  }
  cout << ans << endl;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) cout << a[i][j];
    cout << endl;
  }
}
