#include <bits/stdc++.h>
using namespace std;
int namelist[26][200010];
int namecnt[26];
int golem[200010];
void putG(int n) {
  for (int i = 0; i < n; i++) {
    cout << golem[i] << " ";
  }
  cout << endl;
}
int main() {
  long long ans = 0, n, q;
  cin >> n >> q;
  for (int i = 0; i < n; i++) {
    char a;
    cin >> a;
    namelist[a - 'A'][namecnt[a - 'A']] = i + 1;
    namecnt[a - 'A']++;
    namelist[a - 'A'][namecnt[a - 'A']] = -1;
    golem[i + 1] = 1;
  }
  if (0) putG(n + 2);
  for (int i = 1; i <= q; i++) {
    char a, b;
    cin >> a >> b;
    int ncnt = namecnt[a - 'A'];
    int bef = 0, now = 0;
    if (b == 'L') {
      for (int i = 0; i < ncnt && namelist[a - 'A'][i] != -1; i++) {
        bef = now;
        now = namelist[a - 'A'][i];
        if (bef + 1 == now) {
          golem[now - 1] = golem[now];
          golem[now] = 0;
        } else {
          golem[now - 1] += golem[now];
          golem[now] = 0;
        }
      }
      if (0) putG(n + 2);
    } else {
      for (int i = ncnt - 1; i >= 0; i--) {
        bef = now;
        now = namelist[a - 'A'][i];
        if (bef - 1 == now) {
          golem[now + 1] = golem[now];
          golem[now] = 0;
        } else {
          golem[now + 1] += golem[now];
          golem[now] = 0;
        }
      }
      if (0) putG(n + 2);
    }
  }
  for (int i = 1; i <= n; i++) {
    ans += golem[i];
  }
  cout << ans << endl;
  return 0;
}
