RT
#include <cstdio>
#include <cstring>
using namespace std;
int n,m,k,cl,h1,h2,l1,l2,ans,top,s[510][510][3],st[510],id[510],nxt[510];
char ch,jz[510][510];
int _max(int x,int y){return x > y ? x : y;}
int qry(int c,int x1,int y1,int x2,int y2){return s[x1][x2][c] - s[x2][y1 - 1][c] - s[x1 - 1][y2][c] + s[x1 - 1][y1 - 1][c];}
int main()
{
scanf("%d%d%d",&n,&m,&k);
for(int i = 1;i <= n;i++)
{
scanf("\n");
for(int j = 1;j <= m;j++)
{
scanf("%c",&ch);
jz[i][j] = ch;
s[i][j][0] = s[i - 1][j][0] + s[i][j - 1][0] - s[i - 1][j - 1][0];
s[i][j][1] = s[i - 1][j][1] + s[i][j - 1][1] - s[i - 1][j - 1][1];
s[i][j][2] = s[i - 1][j][2] + s[i][j - 1][2] - s[i - 1][j - 1][2];
if(ch == 'B') s[i][j][0]++;
if(ch == 'G') s[i][j][1]++;
if(ch == 'P') s[i][j][2]++;
}
}
for(int c = 0;c <= 1;c++)
for(int i = 1;i <= n;i++)
for(int j = i;j <= n;j++)
for(int l = 1,r = 1;r < m;)
{
while(!qry(2,i,r + 1,j,r + 1) && qry(c ^ 1,i,l,j,r + 1) <= k && r < m) r++;
if((j - i + 1) * (r - l + 1) > ans)
{
ans = (j - i + 1) * (r - l + 1);
cl = c;
h1 = i,h2 = j;
l1 = l,l2 = r;
}
if(qry(2,i,r + 1,j,r + 1) || qry(c ^ 1,i,r + 1,j,r + 1) > k)
{
r++;
while((qry(2,i,r,j,r) || qry(c ^ 1,i,r,j,r) > k) && r < m) r++,l = r;
}
while(qry(c ^ 1,i,l,j,r + 1) > k && l <= r) l++;
}
for(int i = 1;i <= n;i++)
for(int j = i;j <= n;j++)
for(int l = 1,r = 1;r < m;r = l)
{
while(qry(2,i,r + 1,j,r + 1) == j - i + 1 && r < m) r++;
ans = _max(ans,(r - l + 1) * (j - i + 1));
l = r + 1;
while(qry(2,i,l,j,l) != j - i + 1 && l < m) l++;
}
if(cl == 0) ch = 'B';
else ch = 'G';
for(int i = h1;i <= h2;i++)
for(int j = l1;j <= l2;j++)
jz[i][j] = ch;
printf("%d\n",ans);
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= m;j++) printf("%c",jz[i][j]);
printf("\n");
}
return 0;
}