#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
const int M = 3e5 + 1;
int seg[M*2];
void modify(int p,int x,int v=0,int s=0,int e=M)
{
if (s+1==e)
{
seg[v]=x;
return;
}
int mid=(s+e)/2, lc=v+1, rc=v+(mid-s)*2;
if (p<mid)
modify(p,x,lc,s,mid);
else
modify(p,x,rc,mid,e);
seg[v]=max(seg[lc],seg[rc]);
}
int get(int l,int r,int v=0,int s=0,int e=M)
{
if (l>=e or r<=s) return 0;
if (l<=s && e<=r) return seg[v];
int mid=(s+e)/2, lc=v+1, rc=v+(mid-s)*2;
return max(get(l,r,lc,s,mid),get(l,r,rc,mid,e));
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(NULL), cout.tie(NULL);
int n,q;
cin>>n>>q;
string s;
cin>>s;
for (int i=0;i<n;i++)
if (s[i]=='1')
modify(i,0);
else
modify(i,q+1);
for (int i=1;i<=q;i++)
{
string s;
cin>>s;
if (s[0]=='t')
{
int x;
cin>>x;
modify(x-1,i);
}
else
{
int a,b;
cin>>a>>b;a--, b--;
cout<<max(0,i-get(a,b))<<endl;
}
}
return 0;
}