//{Headers
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<string>
#include<algorithm>
#include<list>
#include<queue>
#include<deque>
#include<vector>
#include<stack>
#include<map>
#include<set>
#include<bitset>

using namespace std;
typedef vector< int > vi;
typedef vector< vi > vvi;
typedef pair< int,int > pii;
#define mp(x,y) make_pair(x,y)
typedef long long ll;
//}

const int MAXN=1e5;
int N,Q,par[MAXN+1];

int root(int x){return x==par[x]?x:root(par[x]);}

void solve(){
    long long ans=0;
    char op;
    int x;
    par[1]=1;
    for(int i=2;i<=N;i++) scanf("%d",&par[i]);
    while(Q--){
        scanf(" %c %d ",&op,&x);
        if(op=='Q') ans+=root(x);
        else par[x]=x;
    }
    printf("%lld\n",ans);
}

int main(void){
//    freopen("in.txt","r",stdin);
    while(~scanf("%d%d",&N,&Q) && N!=0)
        solve();
    return 0;
}

/*
Sample Input
6 3
1
1
2
3
3
Q 5
M 3
Q 5
0 0
Output for the Sample Input
4
*/

