#include<stdio.h>
int father[100001];
int fine(int x)//压缩,只用压缩时间320
{
int r=x,j;
while(father[r]>0)
r=father[r];//r是根
while(r!=x)
{
j=father[x];
father[x]=r;
x=j;
}
return r;
}
void weightmerge(int x,int y)//只用折叠时间为280//折叠压缩一起用260
{
int temp;
int ix,iy;
ix=fine(x);
iy=fine(y);
temp=father[ix]+father[iy];
if(ix!=iy)
if(father[ix]>father[iy])//ix的结点少,以结点多的为父节点
{
father[iy]=temp;
father[ix]=iy;//iy为父指针
}
else
{
father[ix]=temp;
father[iy]=ix;//ix为父指针
}
}
int main()
{
int N,M,icase=1;
char c;
bool flag=false;
while(scanf("%d%d",&N,&M)!=EOF)
{
if(flag)
printf("\n");
flag=false;
for(int i=1;i<=N;i++)
{
father[i]=-1;
}
while(M--)
{
int re1,re2,q;
scanf("%*c");
scanf("%c",&c);
if(c=='M')
{
scanf("%d%d",&re1,&re2);
weightmerge(re1,re2);
}
else
{
if(!flag)
{
printf("Case %d:\n",icase++);
flag=true;
}
scanf("%d",&q);
printf("%d",-father[fine(q)]);
if(M!=1)
printf("\n");
}
}
}
return 0;
}