# include <stdio.h>
# include <string.h>
# include <limits.h>

int max(int a,int b){
    return a>b?a:b;
}
int main() {
    int mm= INT_MIN;
    int m;
    scanf("%d",&m);
    int fnode[m],num[m], dp[m];
    

    char str[m+1];
    int i,j,n,cnt;
    fnode[0]=1;
    for(i=1;i<m;i++){
        scanf("%d",fnode+i);
    }
    scanf("%s",str);
    int q;
    scanf("%d",&q);
    int qr[q];
    
    for(i=0;i<q;i++){
        scanf("%d",qr+i);
    }
    for(i=0;i<m;i++){
        if(str[i] == 'W') num[i]= 0;
        if(str[i] == 'R' ) num[i]=1;
    }
    cnt=0;
    for(i=0;i<m;i++){
        cnt += num[i];
        dp[i]=mm;
    }
    dp[0] = cnt;
    for(i=m-1;i>0;i--){
        j=i;
        //if(dp[i]>0) continue;
        dp[j] = max(dp[j],num[j]);
        n=fnode[i];
        
        if(n!=1){
          // dp[n-1] -= dp[j];
            dp[n-1] =max(dp[n-1]+dp[j], num[n-1]+dp[j]);
            //dp[n-1] =dp[n-1]+dp[j];
            //j=fnode[n-1];
            //n=fnode[j];
            continue;
        }
        
    }
    
//     for(i=0;i<m;i++){
//         printf("%d\x20",dp[i]);
//     }
        for(i=0;i<q;i++){
        printf("%d\n",dp[qr[i]-1]);
    }
//    
    
    
    return 0;
}