// https://szkopul.edu.pl/problemset/problem/R6kgLB2Xz3fsLFYKA-4P9fzp/site/?key=statement
// OI XIV (2 etap)
// Megalopolis
#include <array>
#include <bitset>
#include <iostream>
#include <vector>
constexpr int sizik = 1000 * 1000;
constexpr int MAXN = 250 * 1000 + 7;
// std::array<int, sizik> arr;
std::array<int, MAXN> odl;
std::array<int, MAXN> pre;
std::array<int, MAXN> max_pre;
std::array<std::vector<int>, MAXN> kra;
std::bitset<MAXN> visited;
std::array<int, sizik> d;
void akt(int o, int x, int y, int A, int B) {
if (A <= x && y <= B) {
d[o]++;
return;
}
if (B < x || y < A) return;
akt(2 * o, x, (x + y) / 2, A, B);
akt(2 * o + 1, (x + y) / 2 + 1, y, A, B);
}
int w_punkcie(int v, int ll) {
v += ll - 1;
int res = 0;
while (v > 0) {
res += d[v];
v /= 2;
}
return res;
}
void DFS(int v, int& c, int curr = 0) {
if (visited[v]) {
return;
}
pre[v] = ++c;
odl[v] = curr;
visited[v] = true;
for (int i = 0; i < kra[v].size(); i++) {
DFS(kra[v][i], c, curr + 1);
}
max_pre[v] = c;
}
int main() {
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
int n;
std::cin >> n;
for (int i = 0; i < n - 1; i++) {
int a, b;
std::cin >> a >> b;
// arr[b] = a;
kra[a].push_back(b);
kra[b].push_back(a);
}
int temp = 0;
DFS(1, temp);
int ll = 1;
while (ll < n)
ll *= 2;
int m;
std::cin >> m;
for (int i = 0; i < n + m - 1; i++) {
char type;
std::cin >> type;
if (type == 'W') {
int a;
std::cin >> a;
int ans = odl[a] - w_punkcie(pre[a], ll);
std::cout << ans << '\n';
} else if (type == 'A') {
int a, b;
std::cin >> a >> b;
// pre[b], max_pre[b];
akt(1, 1, ll, pre[b], max_pre[b]);
}
}
return 0;
}