#include <bits/stdc++.h>
using namespace std;
vector<char> v[200010];
vector<int> t[60];
int main() {
  int N, Q;
  scanf("%d%d", &N, &Q);
  string s;
  cin >> s;
  int num = s.length();
  int len = num;
  for (int i = 0; i < s.length(); i++) {
    v[i + 1].push_back(s[i]);
    if (s[i] >= 'a' && s[i] <= 'z') {
      t[(s[i] - 'a' + 1)].push_back(i + 1);
    } else if (s[i] >= 'A' && s[i] <= 'Z') {
      t[s[i] - 'A' + 1 + 26].push_back(i + 1);
    }
  }
  for (int i = 1; i <= Q; i++) {
    char a, b;
    cin >> a >> b;
    if (a >= 'a' && a <= 'z') {
      for (int j = 0; j < t[a - 'a' + 1].size(); j++) {
        if (b == 'R' && t[a - 'a' + 1][j] == len ||
            b == 'L' && t[a - 'a' + 1][j] == 1) {
          num -= v[t[a - 'a' + 1][j]].size();
          vector<char>::iterator it = v[t[a - 'a' + 1][j]].begin();
          for (; it != v[t[a - 'a' + 1][j]].end(); it++) {
            v[t[a - 'a' + 1][j]].erase(it);
            it--;
          }
        } else if (b == 'R') {
          vector<char>::iterator it = v[t[a - 'a' + 1][j]].begin();
          for (; it != v[t[a - 'a' + 1][j]].end(); it++) {
            v[t[a - 'a' + 1][j] + 1].push_back(*it);
            v[t[a - 'a' + 1][j]].erase(it);
            it--;
          }
        } else if (b == 'L') {
          vector<char>::iterator it = v[t[a - 'a' + 1][j]].begin();
          for (; it != v[t[a - 'a' + 1][j]].end(); it++) {
            v[t[a - 'a' + 1][j] - 1].push_back(*it);
            v[t[a - 'a' + 1][j]].erase(it);
            it--;
          }
        }
      }
    } else if (a >= 'A' && a <= 'Z') {
      for (int j = 0; j < t[a - 'A' + 1 + 26].size(); j++) {
        if (b == 'R' && t[a - 'A' + 26 + 1][j] == len ||
            b == 'L' && t[a - 'A' + 26 + 1][j] == 1) {
          num -= v[t[a - 'A' + 26 + 1][j]].size();
          vector<char>::iterator it = v[t[a - 'A' + 26 + 1][j]].begin();
          for (; it != v[t[a - 'A' + 26 + 1][j]].end(); it++) {
            v[t[a - 'A' + 26 + 1][j]].erase(it);
            it--;
          }
        } else if (b == 'R') {
          vector<char>::iterator it = v[t[a - 'A' + 26 + 1][j]].begin();
          for (; it != v[t[a - 'A' + 26 + 1][j]].end(); it++) {
            v[t[a - 'A' + 26 + 1][j] + 1].push_back(*it);
            v[t[a - 'A' + 26 + 1][j]].erase(it);
            it--;
          }
        } else if (b == 'L') {
          vector<char>::iterator it = v[t[a - 'A' + 26 + 1][j]].begin();
          for (; it != v[t[a - 'A' + 26 + 1][j]].end(); it++) {
            v[t[a - 'A' + 26 + 1][j] - 1].push_back(*it);
            v[t[a - 'A' + 26 + 1][j]].erase(it);
            it--;
          }
        }
      }
    }
  }
  cout << num << endl;
  return 0;
}
