// #牛客春招刷题训练营# https://www.nowcoder.com/discuss/726480854079250432
#include <iostream>
#include <vector>
using namespace std;
const int nn = static_cast<int>(1e5 + 10);
vector<int> a[nn];//----------存储子节点
int ans[nn]{0};//------------存储每个节点的答案
void dfs(int node){//---------dfs
size_t size = a[node].size();
for(int i = 0; i < size; i++){//--------遍历每个子节点
int son = a[node][i];
dfs(son);
ans[node] += ans[son];//-----当前节点作为根的树的答案是其子节点作为根的答案的总和
}
}
int main(){
ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int n;
int x;
cin >> n;
for (int i = 0; i < n - 1; i++){
cin >> x;
a[x].push_back(i + 2);
}
string s;
cin >> s;
for (int i = 0; i < n; i++)
if (s[i] == 'R')
ans[i + 1] = 1;//-----初始化一下
dfs(1);
int q;
cin >> q;
while(q--){
cin >> x;
cout << ans[x] << '\n';
}
return 0;
}