# include <bits/stdc++.h>
using namespace std;
int c1[3],c2[3];
int main ()
{
string s;
while (cin>>s)
{
memset (c1,0,sizeof(c1));
memset (c2,0,sizeof(c2));
int flag=0;
for (int i=0;i<6;++i) //来记录r,b,g每一块各有几个,要保证颜色的个数对应相等.
{
if (s[i]=='r') c1[0]++;
if (s[i]=='b') c1[1]++;
if (s[i]=='g') c1[2]++;
}
for (int i=6;i<12;++i)
{
if (s[i]=='r') c2[0]++;
if (s[i]=='b') c2[1]++;
if (s[i]=='g') c2[2]++;
}
for (int i=0;i<3;++i) //对应的颜色块不相等就直接break掉,标记一下。
if (c1[i]!=c2[i])
{
flag=1;
break;
}
if (flag)
{
printf ("FALSE\n");
continue;
}
int p;
for (int k=6,q=11;k<q;k++,q--)//外循环是循环后面一个筛子对应的面
{
p=0;
for (int i=0,j=5;i<j;i++,j--)//内循环是前面一个筛子对应的面
{
if (!((s[i]==s[k]&&s[j]==s[q])||(s[i]==s[q]&&s[j]==s[k])))
//这个条件的设置因人而异,我这里是判断的两种对应情况都不相等的。
{
p++;
}
}
if (p==3) //如果p等于3,意味着有一面后面与前面的不对应
{
flag=1;
break;
}
}
if (flag)
printf ("FALSE\n");
else
printf ("TRUE\n");
}
return 0;
}
水一题