#include <bits/stdc++.h>
using namespace std;
int main(int argc, char* argv[]) {
  long long N, Q, i, j;
  string s;
  cin >> N >> Q;
  cin >> s;
  char t, d;
  vector<long long> num(N, 1);
  map<char, vector<long long>> myMap;
  map<char, vector<long long>>::iterator mit;
  for (i = 0; i < N; i++) {
    mit = myMap.find(s[i]);
    if (mit == myMap.end()) {
      myMap[s[i]].push_back(i);
    } else {
      (*mit).second.push_back(i);
    }
  }
  long long n = N;
  for (i = 0; i < Q; i++) {
    cin >> t >> d;
    mit = myMap.find(t);
    if (mit != myMap.end()) {
      long long indexNum = (*mit).second.size();
      if (d == 'L') {
        for (j = 0; j < indexNum; j++) {
          long long pos = (*mit).second[j];
          if (num[pos] > 0) {
            if (pos - 1 >= 0) {
              num[pos - 1] += num[pos];
            } else {
              n -= num[pos];
            }
            num[pos] = 0;
          }
        }
      } else {
        for (j = indexNum - 1; j >= 0; j--) {
          long long pos = (*mit).second[j];
          if (num[pos] > 0) {
            if (pos + 1 < N) {
              num[pos + 1] += num[pos];
            } else {
              n -= num[pos];
            }
            num[pos] = 0;
          }
        }
      }
    }
  }
  cout << n << endl;
  return 0;
}
