#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MM 30
char matrix[MM][MM];
int vis[MM][MM];
int ret,row,col;
int inx[4]={0,-1,0,1}; //right,up,left,down
int iny[4]={1,0,-1,0};
void set()
{
memset(matrix
,0,sizeof(matrix
)); }
void dfs(int x,int y)
{
int i,j,k;
for(k=0;k<4;k++)
{
i=x+inx[k];
j=y+iny[k];
if(i>=0 && i<row && j>=0 && j<col && matrix[i][j]=='X' && !vis[i][j])
{
vis[i][j]=1;
}
else if(i>=0 && i<row && j>=0 && j<col && matrix[i][j]=='O' && !vis[i][j])
{
if(k==0)
{
if(matrix[i][j+1]=='.' && i>=0 && i<row && j+1>=0 && j+1<col && !vis[i][j+1])
{
matrix[i][j]='.';
matrix[i][j+1]='O';
vis[i][j]=1;
dfs(i,j);
}
}
else if(k==1)
{
if(matrix[i-1][j]=='.' && i-1>=0 && i-1<row && j>=0 && j<col && !vis[i-1][j])
{
matrix[i][j]='.';
matrix[i-1][j]='O';
vis[i][j]=1;
dfs(i,j);
}
}
else if(k==2)
{
if(matrix[i][j-1]=='.' && i>=0 && i<row && j-1>=0 && j-1<col && !vis[i][j-1])
{
matrix[i][j]='.';
matrix[i][j-1]='O';
vis[i][j]=1;
dfs(i,j);
}
}
else if(k==3)
{
if(matrix[i+1][j]=='.' && i+1>=0 && i+1<row && j>=0 && j<col && !vis[i+1][j])
{
matrix[i][j]='.';
matrix[i+1][j]='O';
vis[i][j]=1;
dfs(i,j);
}
}
}
else if(i>=0 && i<row && j>=0 && j<col && matrix[i][j]=='C' && !vis[i][j])
{
ret++;
matrix[i][j]='.';
vis[i][j]=1;
dfs(i,j);
}
else if(i>=0 && i<row && j>=0 && j<col && matrix[i][j]=='.' && !vis[i][j])
{
vis[i][j]=1;
dfs(i,j);
}
}
}
int main()
{
int test,t;
int i,j,flag;
for(t=0;t<test;t++)
{
set();
for(i=0;i<row;i++)
{
}
flag=0;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
if(matrix[i][j]=='S')
{
ret=0;
flag=1;
matrix[i][j]='.';
vis[i][j]=1;
dfs(i,j);
break;
}
}
if(flag) break;
}
}
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RyaW5nLmg+CiNpbmNsdWRlPHN0ZGxpYi5oPgojZGVmaW5lIE1NIDMwCgpjaGFyIG1hdHJpeFtNTV1bTU1dOwppbnQgdmlzW01NXVtNTV07CmludCByZXQscm93LGNvbDsKCmludCBpbnhbNF09ezAsLTEsMCwxfTsgIC8vcmlnaHQsdXAsbGVmdCxkb3duCmludCBpbnlbNF09ezEsMCwtMSwwfTsKCnZvaWQgc2V0KCkKewogICAgbWVtc2V0KG1hdHJpeCwwLHNpemVvZihtYXRyaXgpKTsKICAgIG1lbXNldCh2aXMsMCxzaXplb2YodmlzKSk7Cn0KCnZvaWQgZGZzKGludCB4LGludCB5KQp7CiAgICBpbnQgaSxqLGs7CiAgICBmb3Ioaz0wO2s8NDtrKyspCiAgICB7CiAgICAgICAgaT14K2lueFtrXTsKICAgICAgICBqPXkraW55W2tdOwogICAgICAgIGlmKGk+PTAgJiYgaTxyb3cgJiYgaj49MCAmJiBqPGNvbCAmJiBtYXRyaXhbaV1bal09PSdYJyAmJiAhdmlzW2ldW2pdKQogICAgICAgIHsKICAgICAgICAgICAgdmlzW2ldW2pdPTE7CgogICAgICAgIH0KICAgICAgICBlbHNlIGlmKGk+PTAgJiYgaTxyb3cgJiYgaj49MCAmJiBqPGNvbCAmJiBtYXRyaXhbaV1bal09PSdPJyAmJiAhdmlzW2ldW2pdKQogICAgICAgIHsKICAgICAgICAgICAgaWYoaz09MCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYobWF0cml4W2ldW2orMV09PScuJyAmJiBpPj0wICYmIGk8cm93ICYmIGorMT49MCAmJiBqKzE8Y29sICYmICF2aXNbaV1baisxXSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBtYXRyaXhbaV1bal09Jy4nOwogICAgICAgICAgICAgICAgICAgIG1hdHJpeFtpXVtqKzFdPSdPJzsKICAgICAgICAgICAgICAgICAgICB2aXNbaV1bal09MTsKICAgICAgICAgICAgICAgICAgICBkZnMoaSxqKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZihrPT0xKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZihtYXRyaXhbaS0xXVtqXT09Jy4nICYmIGktMT49MCAmJiBpLTE8cm93ICYmIGo+PTAgJiYgajxjb2wgJiYgIXZpc1tpLTFdW2pdKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG1hdHJpeFtpXVtqXT0nLic7CiAgICAgICAgICAgICAgICAgICAgbWF0cml4W2ktMV1bal09J08nOwogICAgICAgICAgICAgICAgICAgIHZpc1tpXVtqXT0xOwogICAgICAgICAgICAgICAgICAgIGRmcyhpLGopOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKGs9PTIpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKG1hdHJpeFtpXVtqLTFdPT0nLicgJiYgaT49MCAmJiBpPHJvdyAmJiBqLTE+PTAgJiYgai0xPGNvbCAmJiAhdmlzW2ldW2otMV0pCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbWF0cml4W2ldW2pdPScuJzsKICAgICAgICAgICAgICAgICAgICBtYXRyaXhbaV1bai0xXT0nTyc7CiAgICAgICAgICAgICAgICAgICAgdmlzW2ldW2pdPTE7CiAgICAgICAgICAgICAgICAgICAgZGZzKGksaik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoaz09MykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYobWF0cml4W2krMV1bal09PScuJyAmJiBpKzE+PTAgJiYgaSsxPHJvdyAmJiBqPj0wICYmIGo8Y29sICYmICF2aXNbaSsxXVtqXSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBtYXRyaXhbaV1bal09Jy4nOwogICAgICAgICAgICAgICAgICAgIG1hdHJpeFtpKzFdW2pdPSdPJzsKICAgICAgICAgICAgICAgICAgICB2aXNbaV1bal09MTsKICAgICAgICAgICAgICAgICAgICBkZnMoaSxqKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZihpPj0wICYmIGk8cm93ICYmIGo+PTAgJiYgajxjb2wgJiYgbWF0cml4W2ldW2pdPT0nQycgJiYgIXZpc1tpXVtqXSkKICAgICAgICB7CiAgICAgICAgICAgIHJldCsrOwogICAgICAgICAgICBtYXRyaXhbaV1bal09Jy4nOwogICAgICAgICAgICB2aXNbaV1bal09MTsKICAgICAgICAgICAgZGZzKGksaik7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoaT49MCAmJiBpPHJvdyAmJiBqPj0wICYmIGo8Y29sICYmIG1hdHJpeFtpXVtqXT09Jy4nICYmICF2aXNbaV1bal0pCiAgICAgICAgewogICAgICAgICAgICB2aXNbaV1bal09MTsKICAgICAgICAgICAgZGZzKGksaik7CiAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbigpCnsKICAgIGludCB0ZXN0LHQ7CiAgICBpbnQgaSxqLGZsYWc7CiAgICBzY2FuZigiJWQiLCZ0ZXN0KTsKICAgIGZvcih0PTA7dDx0ZXN0O3QrKykKICAgIHsKICAgICAgICBzY2FuZigiJWQlZCIsJnJvdywmY29sKTsKICAgICAgICBzZXQoKTsKICAgICAgICBmb3IoaT0wO2k8cm93O2krKykKICAgICAgICB7CiAgICAgICAgICAgIHNjYW5mKCIlcyIsbWF0cml4W2ldKTsKICAgICAgICB9CiAgICAgICAgZmxhZz0wOwogICAgICAgIGZvcihpPTA7aTxyb3c7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgZm9yKGo9MDtqPGNvbDtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKG1hdHJpeFtpXVtqXT09J1MnKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHJldD0wOwogICAgICAgICAgICAgICAgICAgIGZsYWc9MTsKICAgICAgICAgICAgICAgICAgICBtYXRyaXhbaV1bal09Jy4nOwogICAgICAgICAgICAgICAgICAgIHZpc1tpXVtqXT0xOwogICAgICAgICAgICAgICAgICAgIGRmcyhpLGopOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKGZsYWcpIGJyZWFrOwogICAgICAgIH0KICAgICAgICBwcmludGYoIiVkXG4iLHJldCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=