#include <bits/stdc++.h>
using namespace std;
struct node {
  int flag, seven, four, ls1, ls2;
};
char S[1000100 + 1];
node segtree[4 * 1000100 + 1];
void init(int n, int l, int r) {
  if (l == r) {
    if (S[l] == '4')
      segtree[n].four = 1;
    else
      segtree[n].seven = 1;
    segtree[n].ls1 = 1;
    segtree[n].ls2 = 1;
  } else {
    init(2 * n, l, (l + r) / 2);
    init(2 * n + 1, (l + r) / 2 + 1, r);
    segtree[n].four = segtree[2 * n].four + segtree[2 * n + 1].four;
    segtree[n].seven = segtree[2 * n].seven + segtree[2 * n + 1].seven;
    segtree[n].ls1 = max(max(segtree[2 * n].ls1, segtree[2 * n + 1].ls1),
                         max(segtree[2 * n].four + segtree[2 * n + 1].ls1,
                             segtree[2 * n].ls1 + segtree[2 * n + 1].seven));
    segtree[n].ls2 = max(max(segtree[2 * n].ls2, segtree[2 * n + 1].ls2),
                         max(segtree[2 * n].seven + segtree[2 * n + 1].ls2,
                             segtree[2 * n].ls2 + segtree[2 * n + 1].four));
  }
}
void unflag(int n, int l, int r) {
  if (segtree[n].flag) {
    swap(segtree[n].four, segtree[n].seven);
    swap(segtree[n].ls1, segtree[n].ls2);
    if (l != r) {
      segtree[2 * n].flag = 1 - segtree[2 * n].flag;
      segtree[2 * n + 1].flag = 1 - segtree[2 * n + 1].flag;
    }
    segtree[n].flag = 0;
  }
}
void update(int n, int l, int r, int i, int j) {
  if (r < i || l > j) {
    unflag(n, l, r);
    return;
  } else if (i <= l && r <= j) {
    segtree[n].flag = 1 - segtree[n].flag;
    unflag(n, l, r);
  } else {
    unflag(n, l, r);
    update(2 * n, l, (l + r) / 2, i, j);
    update(2 * n + 1, (l + r) / 2 + 1, r, i, j);
    if (l != r) {
      segtree[n].four = segtree[2 * n].four + segtree[2 * n + 1].four;
      segtree[n].seven = segtree[2 * n].seven + segtree[2 * n + 1].seven;
      segtree[n].ls1 = max(max(segtree[2 * n].ls1, segtree[2 * n + 1].ls1),
                           max(segtree[2 * n].four + segtree[2 * n + 1].ls1,
                               segtree[2 * n].ls1 + segtree[2 * n + 1].seven));
      segtree[n].ls2 = max(max(segtree[2 * n].ls2, segtree[2 * n + 1].ls2),
                           max(segtree[2 * n].seven + segtree[2 * n + 1].ls2,
                               segtree[2 * n].ls2 + segtree[2 * n + 1].four));
    }
  }
}
int main(void) {
  int N, Q, u, v;
  scanf("%d%d", &N, &Q);
  scanf("%s", S);
  init(1, 0, N - 1);
  while (Q--) {
    char cmd[10];
    scanf("%s", cmd);
    if (!strcmp(cmd, "count"))
      printf("%d\n", segtree[1].ls1);
    else {
      scanf("%d%d", &u, &v);
      update(1, 0, N - 1, u - 1, v - 1);
    }
  }
  return 0;
}
