#include<bits/stdc++.h>
using namespace std;
vector<int> g[250100];
int df[250100],ys[250100],l[250100],r[250100],t[250100],n,a,b,m;
char s[2];
inline int read(){
int a=0;char x=getchar();
while(x<'0'||x>'9')x=getchar();
while(x>='0'&&x<='9')a=(a<<3)+(a<<1)+x-48,x=getchar();
return a;
}
int dfs(int id,int dep)
{
df[++df[0]]=id;
t[df[0]]=dep;
ys[id]=df[0];
if(g[id].size()==0)
{
l[id]=r[id]=df[0];
return 1;
}
l[id]=df[0];
int len=0;
for(int i=0;i<g[id].size();i++)
len+=dfs(g[id][i],dep+1);
r[id]=l[id]+len;
return len;
}
int lowbit(int x)
{
return x&(x^(x-1));
}
void chg(int x,int num)
{
while(x<=n)
{
t[x]+=num;
x+=lowbit(x);
}
return;
}
int sc(int x)
{
int num=0;
while(x>0)
{
num+=t[x];
x-=lowbit(x);
}
return num;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n-1;i++)
{
scanf("%d%d",&a,&b);
g[a].push_back(b);
}
a=dfs(1,0);
for(int i=n;i>=1;i--)
t[i]=t[i]-t[i-1];
for(int i=1;i<=n;i++)
{
a=i;
b=1;
while(a%2==0)
{
a/=2;
t[i]+=t[i-b];
b*=2;
}
}
char op;
scanf("%d",&m);
int k=m+n-1;
while(k--)
{
scanf("%s",s);
if(s[0]=='A')
{
a=read();
b=read();
chg(l[b],-1);
chg(r[b]+1,1);
}
else if(s[0]=='W')
{
a=read();
printf("%d\n",sc(ys[a]));
}
}
return 0;
}