#include<stdio.h>
#include<iostream>
using namespace std;
const int N=250005;
char c[2];
int n,i,x,y,m,k,t[N],sum[N],id[N],mx[N];
int tot,head[N],to[N],Next[N];
inline void read(int&a){char c;while(!(((c=getchar())>=‘0‘)&&(c<=‘9‘)));a=c-‘0‘;while(((c=getchar())>=‘0‘)&&(c<=‘9‘))(a*=10)+=c-‘0‘;}
void add(int x,int y)
{
to[tot]=y;
Next[tot]=head[x];
head[x]=tot++;
}
void update(int x,int y)
{
while(x<=n) t[x]+=y,x+=x&-x;
}
int solve(int x)
{
int ans=0;
while(x) ans+=t[x],x-=x&-x;
return ans;
}
inline void dfs(int x,int pre)
{
id[x]=mx[x]=++k;
for(int i=head[x];i!=-1;i=Next[i]) if(to[i]!=pre)
{
sum[to[i]]=sum[x]+1;
dfs(to[i],x);
mx[x]=max(mx[x],mx[to[i]]);
}
}
int main()
{
read(n);
for(i=1;i<=n;i++) head[i]=-1;
for(i=1;i<n;i++)
{
read(x),read(y);
add(x,y);
}
dfs(1,0);
for(i=1;i<=n;i++) update(id[i],1),update(mx[i]+1,-1);
read(m);
for(i=1;i<=m+n-1;i++)
{
scanf("%s",c);
if(c[0]==‘A‘)
{
read(x),read(y);
update(id[y],-1);update(mx[y]+1,1);
} else read(x),printf("%d\n",solve(id[x])-1);
}
return 0;
}