#include<bits/stdc++.h>
using namespace std;


int main(){
  int n,q;
  while(cin>>n>>q,n){
    vector<int> par(n);
    par[0]=0;
    for(int i=1;i<n;i++){
      int p;
      cin>>p;
      p--;
      par[i]=p;
    }
    vector<int> rootpar(n,0);
    int r=max(sqrt(n),5.0)+10;
    for(int i=0;i<n;i++){
      int v=par[i];
      for(int j=0;j<r;j++){
	v=par[v];
      }
      rootpar[i]=v;
    }
    vector<int> marked(n,0);
    marked[0]=1;
    vector<int> lowmark(n,0);
    lowmark[0]=1;
    long long int res=0;
    for(int i=0;i<q;i++){
      char cmd;
      int v;
      cin>>cmd>>v;
      v--;
      if(cmd=='M'){
	marked[v]=1;
	int nex=v;
	for(int i=0;i<2*r;i++){
	  lowmark[nex]=1;
	  nex=par[nex];
	}
	continue;
      }
      if(cmd=='Q'){
	int nex=v;
	bool ressed=false;
	for(int i=0;i<2*r+3 && !ressed;i++){
	  if(marked[nex]){
	    res+=nex+1;
	    ressed=true;
	  }
	  else{
	    nex=par[nex];
	  }
	}
	if(ressed)continue;
	while(!lowmark[rootpar[nex]]) nex=rootpar[nex];
	for(int i=0;i<2*r;i++){
	  if(marked[nex]){
	    res+=nex+1;
	    break;
	  }
	  nex=par[nex];
	}
      }
      
    }
    cout<<res<<endl;
  }
  return 0;

}