#include <bits/stdc++.h>
using namespace std;
const int maxn = 200010;
char c[maxn];
set<int> s[3];
int sum[3][maxn], N;
int id(char p) {
  if (p == 'R') return 0;
  if (p == 'S') return 1;
  return 2;
}
void add(int opt, int x, int val) {
  for (; x <= N; x += (-x) & x) sum[opt][x] += val;
}
int query(int opt, int x) {
  int res = 0;
  for (; x; x -= (-x) & x) res += sum[opt][x];
  return res;
}
int cal(int p) {
  int lat = (p + 2) % 3, pre = (p + 1) % 3;
  if (s[lat].empty()) return query(p, N);
  if (s[pre].empty()) return 0;
  return query(p, N) - query(p, max(*s[pre].rbegin(), *s[lat].rbegin())) +
         query(p, min(*s[pre].begin(), *s[lat].begin())) +
         query(p, *s[pre].rbegin()) - query(p, *s[pre].begin());
}
int main() {
  int M, pos, ans, p;
  char cc[3];
  scanf("%d%d%s", &N, &M, c + 1);
  for (int i = 1; i <= N; i++) {
    p = id(c[i]);
    s[p].insert(i);
    add(p, i, 1);
  }
  ans = cal(0) + cal(1) + cal(2);
  printf("%d\n", ans);
  for (int i = 1; i <= M; i++) {
    scanf("%d%s", &pos, cc + 1);
    if (c[pos] == cc[1]) {
      printf("%d\n", ans);
      continue;
    }
    p = id(c[pos]);
    s[p].erase(pos);
    add(p, pos, -1);
    c[pos] = cc[1];
    p = id(c[pos]);
    s[p].insert(pos);
    add(p, pos, 1);
    ans = cal(0) + cal(1) + cal(2);
    printf("%d\n", ans);
  }
  return 0;
}
