//  #牛客春招刷题训练营# 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;
}