#include<iostream>
#include<algorithm>
#include<cstdlib>
using namespace std;

int main(){
	int N,Q;
    cin >> N >> Q;
    string s = "";
    cin >> s;
    string s2((int)N,'0');
    int numR = 0;
    int numB = 0;
    char t='a';
    char d='a';
    vector<vector<int>> A;
    A.assign(26, vector<int>(N,0));
    vector<vector<int>> G;
    G.assign(Q+1, vector<int>(N,0));

    for(int i=0;i<N;i++){
        // if(s[i] == 'A'){
        //     s2[i] = 'X';
        // }
        A[(int)s[i]-65][i] = 1;
        G[0][i] = 1;
    }
    // cout << "----G:---" <<endl;
    // for(int i=0;i<(Q+1);i++){
    //     for(int j=0;j<N;j++){
    //         cout << G[i][j];
    //     }
    //     cout << endl;
    // }
    // cout << "---------" <<endl;

    for(int i=0;i<Q;i++){
        // cout <<"i:" << i << endl;
        cin >> t >> d;
        // cout << "A[k]: ";
        // for(int j=0; j<N;j++){
        //    cout << A[(int)t-65][j]<<",";
        // }
        // cout << endl;
        if(d=='L'){
        // cout << "LEFT!!" << endl;
            G[i+1][N-1] = (1-A[(int)t-65][N-1])*G[i][N-1];
            for(int j=0;j<(N-1);j++){
                int k,l;
                k = A[(int)t-65][j+1];
                l = G[i][j+1];
                // cout << k << endl;
                // cout << l << endl;
                // cout << k*l << endl;
                G[i+1][j] = (1-A[(int)t-65][j]) * G[i][j] + A[(int)t-65][j+1] * G[i][j+1]  ;
            }        
        }
        else{
            G[i+1][0] = (1-A[(int)t-65][0])*G[i][0];
            // cout << "A0:" << A[(int)t-65][0] << endl;
            // cout << "Go:" << G[i][0] << endl;
            for(int j=1;j<N;j++){
                G[i+1][j] = (1-A[(int)t-65][j])*G[i][j] + A[(int)t-65][j-1]*G[i][j-1]  ;
            }        
        }
        
        // cout << "G[k]: ";
        // for(int j=0; j<N;j++){
        //    cout << G[i+1][j]<<",";
        // }
        // cout << endl;
    }

    // cout << "----G:---" <<endl;
    // for(int i=0;i<(Q+1);i++){
    //     for(int j=0;j<N;j++){
    //         cout << G[i][j];
    //     }
    //     cout << endl;
    // }
    // cout << "---------" <<endl;

    int nt=0;
    for(int i=0;i<N;i++){
        // if(s[i] == 'A'){
        //     s2[i] = 'X';
        // }
        nt += G[Q][i];
    }
    cout << nt << endl;
        // cout << "s: "<< s << endl;
    
        // cout << "A[0]: ";
        // for(int i=0; i<N;i++){
        //    cout << A[0][i];
        // }
        // cout << endl;
        //         cout << "A[1]: ";
        // for(int i=0; i<N;i++){
        //    cout << A[1][i];
        // }
        // cout << endl;
        //         cout << "A[2]: ";
        // for(int i=0; i<N;i++){
        //    cout << A[2][i];
        // }
        // cout << endl;
    return 0;
}
