#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=25e4+5;
typedef long long ll;
inline int read(){
char c=getchar();int x=0,f=1;
while(c<‘0‘||c>‘9‘){if(c==‘-‘)f=-1; c=getchar();}
while(c>=‘0‘&&c<=‘9‘){x=x*10+c-‘0‘; c=getchar();}
return x*f;
}
int n,m,u,v;
char s[3];
struct edge{
int v,ne,c,f;
}e[N<<1];
int cnt,h[N];
inline void ins(int u,int v){
cnt++;
e[cnt].v=v;e[cnt].ne=h[u];h[u]=cnt;
cnt++;
e[cnt].v=u;e[cnt].ne=h[v];h[v]=cnt;
}
int L[N],R[N],dfc,fa[N];
void dfs(int u){
L[u]=++dfc;
for(int i=h[u];i;i=e[i].ne)
if(e[i].v!=fa[u]) fa[e[i].v]=u,dfs(e[i].v);
R[u]=++dfc;
}
int c[N<<1];
inline int lowbit(int x){return x&-x;}
inline void add(int p,int d){
for(int i=p;i<=dfc;i+=lowbit(i)) c[i]+=d;
}
inline int sum(int p){
int ans=0;
for(int i=p;i;i-=lowbit(i)) ans+=c[i];
return ans;
}
int main(){
//freopen("in.txt","r",stdin);
n=read();
for(int i=1;i<=n-1;i++) u=read(),v=read(),ins(u,v);
dfs(1);
for(int i=1;i<=n;i++) add(L[i],1),add(R[i],-1);//,printf("%d %d\n",L[i],R[i]);
m=read();
int Q=n+m-1;
while(Q--){
scanf("%s",s);
if(s[0]==‘A‘){
u=read();v=read();
if(u!=fa[v]) swap(u,v);
add(L[v],-1);add(R[v],1);
}else{
u=read();
printf("%d\n",sum(L[u])-1);
}
}
}