#include <bits/stdc++.h>
int main() {
  long long N, Q, goolem[200000], del = 0;
  std::string s;
  std::vector<int> SymPlace[26];
  char t, d;
  std::cin >> N >> Q >> s;
  for (int i = 0; i < N; i++) {
    goolem[i] = 1;
    SymPlace[s[i] - 'A'].push_back(i);
  }
  for (int i = 0; i < Q; i++) {
    std::cin >> t >> d;
    if (d == 'L') {
      for (int j = 0; j < (int)SymPlace[t - 'A'].size(); j++) {
        if (SymPlace[t - 'A'].at(j) != 0)
          goolem[SymPlace[t - 'A'].at(j) - 1] +=
              goolem[SymPlace[t - 'A'].at(j)];
        else
          del += goolem[SymPlace[t - 'A'].at(j)];
        goolem[SymPlace[t - 'A'].at(j)] = 0;
      }
    }
    if (d == 'R') {
      for (int j = SymPlace[t - 'A'].size() - 1; j >= 0; j--) {
        if (SymPlace[t - 'A'].at(j) != N - 1)
          goolem[SymPlace[t - 'A'].at(j) + 1] +=
              goolem[SymPlace[t - 'A'].at(j)];
        else
          del += goolem[SymPlace[t - 'A'].at(j)];
        goolem[SymPlace[t - 'A'].at(j)] = 0;
      }
    }
  }
  std::cout << N - del;
}
