#include <bits/stdc++.h>
using namespace std;
const int maxn=100010;
const int maxm=100010;
int head[maxn];
int ver[maxm];
int nex[maxm];
int tot;
int rot;
void add(int x,int y)
{
tot++;
nex[tot]=head[x];
head[x]=tot;
ver[tot]=y;
}
int n,m;
int d[maxn];
int fa[maxn][22];
void dfs(int x)
{
for(int i=head[x];i;i=nex[i])
{
int y=ver[i];
fa[y][0]=x;
dfs(y);
}
}
int check(int x)
{
int num=0;
for(int k=21;k>=0;k--)
{
if(d[fa[x][k]]==1) continue;
x=fa[x][k];
num+=(int)pow(2,k);
}
return num;
}
int in[maxn];
int main()
{
cin>>n>>m;
d[0]=1;
for(int i=1;i<=n-1;i++)
{
int u,v;
cin>>u>>v;
add(u,v);
in[v]++;
}
for (int i = 1; i <= n; i++)
{
if (!in[i])
{
rot = i;
break;
}
}
dfs(rot);
for(int k=1;k<=21;k++)
for(int i=n;i>=1;i--)
fa[i][k]=fa[fa[i][k-1]][k-1];
getchar();
for(int i=1;i<=m;i++)
{
string str;
getline(cin,str);
stringstream ss(str);
char a;int b;
ss>>a>>b;
int num=check(b);
cout<<num<<endl;
if(a=='P'){
d[b]=1;
for(int i=1;i<=num;i++)
{
b=fa[b][0];
d[b]=1;
}
}
}
}