#include <iostream>
#include <vector>
#include <string>
using namespace std;

struct foo{
        int num;
        char str;
};

int main(void){

    cin.tie(0);
    ios::sync_with_stdio(false);

    int n,q;

    cin >> n >> q;

    vector<foo> vec(n);
    vector<char> s(n);
    
    cin >> s;

    for(int i = 0;i<n;i++){
        vec.push_back((foo){1,s[i]});
    }

    char tmp,tmpp;

    for(int i =0;i<q;i++){ //命令の回数Q回だけぶんまわす
        cin >> tmp >> tmpp;
        for(int l=0;l<n;l++){//l体目のゴーレムの位置を操作
            if(vec[l].str == tmp){//l個目の要素の床が命令対象の床かどうか？
                if(tmpp == 'L'){//L
                    vec[i].num--;
                    if(l != 0){//一番左じゃなかったら実行
                        vec[i-1].num++;
                    }
                }else{//R
                    vec[i].num--;
                    if(l != n-1){//一番右じゃなかったら実行
                        vec[i+1].num++;
                    }
                }
            }
        }
    }

    int ans = 0;

    for(int i = 0;i<n;i++){
       if(vec[i].num > 0){
           ans += vec[i].num;
       }
    }

    cout << ans;
    return 0;
}