#include <bits/stdc++.h>
using namespace std;
const double PI = 2 * acos(0.0);
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
mt19937_64 rng_64(chrono::steady_clock::now().time_since_epoch().count());
const string DIGITS = "0123456789";
const string ALPH = "abcdefghijklmnopqrstuvwxyz";
template <class T0, class T1>
inline ostream &operator<<(ostream &out, pair<T0, T1> &a) {
  return out << "{" << a.first << ", " << a.second << "}";
}
template <class T0, class T1, class T2>
inline ostream &operator<<(ostream &out, tuple<T0, T1, T2> &a) {
  return out << "{" << get<0>(a) << ", " << get<1>(a) << ", " << get<2>(a)
             << "}";
}
template <class T0, class T1, class T2, class T3>
inline ostream &operator<<(ostream &out, tuple<T0, T1, T2, T3> &a) {
  return out << "{" << get<0>(a) << ", " << get<1>(a) << ", " << get<2>(a)
             << ", " << get<3>(a) << "}";
}
template <class T>
inline ostream &operator<<(ostream &out, vector<T> &a) {
  out << "[";
  for (int i = 0; i < int(a.size()); ++i)
    out << a[i] << vector<string>{", ", "]  "}[i + 1 == a.size()];
  return out;
}
void smain();
signed main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cout << setprecision(12) << fixed;
  smain();
}
const int N = 3000;
const int L = 26;
set<int> g[2][L];
bool used[N];
string s;
int n;
void use(int v) {
  used[v] = true;
  g[0][s[v] - 'A'].erase(v);
  g[1][s[v] - 'A'].erase(v);
  int pr = v - 1;
  if (pr >= 0 && !used[pr]) {
    g[1][s[pr] - 'A'].insert(pr);
  }
  int nx = v + 1;
  if (nx < n && !used[nx]) {
    g[0][s[nx] - 'A'].insert(nx);
  }
}
void smain() {
  int q;
  cin >> n >> q;
  cin >> s;
  vector<pair<int, int> > queries;
  for (int i = 0; i < int(q); ++i) {
    string f, s;
    cin >> f >> s;
    queries.push_back({f[0] - 'A', s[0] == 'R'});
  }
  g[0][s[0] - 'A'].insert(0);
  g[1][s[n - 1] - 'A'].insert(n - 1);
  reverse(queries.begin(), queries.end());
  for (auto q : queries) {
    vector<int> kek(g[q.second][q.first].begin(), g[q.second][q.first].end());
    g[q.second][q.first].clear();
    for (auto v : kek) {
      use(v);
    }
  }
  int ans = 0;
  for (int i = 0; i < int(n); ++i) ans += !used[i];
  cout << ans;
}
