#include <bits/stdc++.h>
using namespace std;
#define maxN 52
char a[maxN][maxN];
int visited[maxN][maxN];
int mark[maxN][maxN];
bool lake;
int numadj,n,m;
vector < pair <int, pair <int,int> > > v;
void checklake(int x,int y)
{
    visited[x][y]=1;
    numadj++;
    if(x==0||x==n-1||y==m-1||y==0)
    {
        lake=false;
        return ;
    }
    if(!visited[x][y+1]&&a[x][y+1]=='.')checklake(x,y+1);
    if(!visited[x][y-1]&&a[x][y-1]=='.')checklake(x,y-1);
    if(!visited[x+1][y]&&a[x+1][y]=='.')checklake(x+1,y);
    if(!visited[x-1][y]&&a[x-1][y]=='.')checklake(x-1,y);
}

void ffill(int x,int y)
{
    a[x][y]='*';
    mark[x][y]=1;
    if(a[x][y+1]=='.'&&!mark[x][y+1])ffill(x,y+1);
    if(a[x][y-1]=='.'&&!mark[x][y-1])ffill(x,y-1);
    if(a[x+1][y]=='.'&&!mark[x+1][y])ffill(x+1,y);
    if(a[x-1][y]=='.'&&!mark[x-1][y])ffill(x-1,y);
}
int main() {
    std::ios::sync_with_stdio(false);
	int k,ans=0;
	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<n;i++)
	{
	    for(int j=0;j<m;j++)
	    { 
	        
	       visited[i][j]=0;
	        mark[i][j]=0;
	    }
	}
	 
	for(int i=0;i<n;i++)
	{
	    for(int j=0;j<m;j++)
	    {   numadj=0;
	        if(a[i][j]=='.'&&!visited[i][j])
	        {   lake=true;
	            checklake(i,j);
	            
	            if(lake)
	            {
	                v.push_back({numadj,{i,j}});
	            }
	        }
	    }
	}
	sort(v.begin(),v.end());
	
	for(int i=0;i<v.size()-k;i++)
	{
	    ans+=v[i].first;
	    ffill(v[i].second.first,v[i].second.second);
	}
	cout<<ans<<endl;
		for(int i=0;i<n;i++)
	{
	    for(int j=0;j<m;j++)
	    { 
	        cout<<a[i][j];
	    }
	    cout<<endl;
	}
	return 0;
}
