#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
vector<int> tree[N];
int redCount[N]; // 每个节点的子树中红色节点的个数(含自己)
char color[N];
// DFS 预处理,返回以 u 为根的子树红色节点个数
int dfs(int u) {
redCount[u] = (color[u] == 'R') ? 1 : 0;
for (int v : tree[u]) {
redCount[u] += dfs(v);
}
return redCount[u];
}
int main() {
int n;
cin >> n;
// 构建树(节点编号从 1 到 n,根是 1)
for (int i = 2, p; i <= n; ++i) {
cin >> p;
tree[p].push_back(i);
}
// 输入颜色(字符串下标从0开始)
string s;
cin >> s;
for (int i = 1; i <= n; ++i) {
color[i] = s[i - 1];
}
// 预处理每个子树红色节点个数
dfs(1);
// 回答查询
int q;
cin >> q;
while (q--) {
int x;
cin >> x;
cout << redCount[x] << "\n";
}
return 0;
}