#include <bits/stdc++.h>
using namespace std;
int const N=3e5+10,LG=20;
int mx[N][LG]={};
int get(int l,int r)
{
int lg=log2(r-l+1);
return max(mx[l][lg],mx[r-(1<<lg)+1][lg]);
}
inline void solve()
{
int n,q;
cin>>n>>q;
string s;
cin>>s;
// vector<int>ind[n]={};
int val[n]={};
int ind[n]={};
for (int i=0;i<n;i++)
{
ind[i]=1e9+10;
if (s[i]=='1')
{
// ind[i].push_back(0);
val[i]=0;
ind[i]=0;
}
}
vector<pair<string,vector<int>>>qu;
qu.push_back({"s",{1}});
for (int i=1;i<=q;i++)
{
string s;
cin>>s;
if (s[0]=='t')
{
int x;
cin>>x;
ind[x-1]=i;
qu.push_back({s,{x}});
}
else
{
int x,t;
cin>>x>>t;
qu.push_back({s,{x,t}});
}
}
for (int i=0;i<n;i++)
{
// cout<<ind[i]<<' ';
mx[i][0]=ind[i];
}
// cout<<endl;
for (int j=1;(1<<j)<=n;j++)
{
for (int i=0;i+(1<<j)-1<n;i++)
{
mx[i][j]=max(mx[i][j-1],mx[i+(1<<(j-1))][j-1]);
}
}
// cout<<mx[0][2]<<endl;
// cout<<get(0,4)<<endl;
for (int i=1;i<=q;i++)
{
string s;
// cin>>s;
s=qu[i].first;
if (s[0]=='q')
{
int a,b;
a=qu[i].second[0],b=qu[i].second[1];
// cin>>a>>b;
a--;b--;
int f=get(a,b-1);
// cout<<a<<' '<<b<<' '<<f<<endl;
cout<<max(0,i-f)<<endl;
}
}
}
int main()
{
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
int t=1;
// cin>>t;
for (int i=1;i<=t;i++)
{
solve();
}
}