#include <cstdio>
#include <iostream>
#include <vector>
#define MAXN 100005
using namespace std;
int N,Q;
int c[MAXN],fa[MAXN],d[MAXN];
int col[MAXN],ans[MAXN];
char ch[MAXN];
vector<int> e[MAXN];
int find(int x){
if(x==fa[x]) return x;
return fa[x]=find(fa[x]);
}
void dfs(int u,int f){
if(col[u]) fa[u]=u;
else fa[u]=f;
d[u]=f;
for(int i=0;i<e[u].size();i++){
int v=e[u][i];
if(v==f) continue;
dfs(v,u);
}
}
int main(){
ios::sync_with_stdio(false);
scanf("%d%d",&N,&Q);
for(int i=1;i<N;i++){
int u,v;
scanf("%d%d",&u,&v);
e[u].push_back(v);
e[v].push_back(u);
}
for(int i=1;i<=Q;i++){
cin>>ch[i]>>c[i];
if(ch[i]=='C') col[c[i]]++;
}
dfs(1,0);
fa[1]=1;
for(int i=Q;i>=1;i--){
if(ch[i]=='C'){
col[c[i]]--;
if(!col[c[i]]) fa[c[i]]=d[c[i]];
}
else ans[i]=find(c[i]);
}
for(int i=1;i<=Q;i++) if(ch[i]=='Q') printf("%d\n",ans[i]);
return 0;
}