//MRasool kheyri
//iran -> khorasan -> ferdows -> Baghestan
//14/2/1405
//vasat azmoonima...
#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
#define el '\n'
#define mid (l+r)/2
#define lid id<<1
#define rid lid|1
const ll maxn = 2e6 + 100 ;
const ll oo = 1e17 + 100 ;
ll n , q , a[maxn] , b[maxn] ;
ll node[maxn] ;
void merge(ll l , ll r , ll id){
node[id] = max(node[lid],node[rid]) ;
return ;
}
void build(ll l , ll r , ll id){
if(l+1 == r){
node[id] = a[l] ? 0 : oo ;
return ;
}
build(l,mid,lid) ;
build(mid,r,rid) ;
merge(l,r,id) ;
return;
}
void update(ll s , ll e , ll l , ll r , ll id , ll x){
if(e <= l || r <= s){return;}
if(s <= l && r <= e){
node[id] = x ;
return ;
}
update(s,e,l,mid,lid,x) ;
update(s,e,mid,r,rid,x) ;
merge(l,r,id) ;
return ;
}
ll get(ll s , ll e , ll l , ll r , ll id){
if(e <= l || r <= s){
return -oo ;
}
if(s <= l && r <= e){
return node[id] ;
}
return max(get(s,e,l,mid,lid),get(s,e,mid,r,rid)) ;
}
void solve(){
cin>>n>>q ;
for(ll i = 0 ; i < n ; i++){
char ch ;
cin>>ch ;
a[i] = ch-'0' ;
}
build(0,n,1) ;
for(ll _ = 0 ; _ < q ; _++){
string s ;
cin>>s ;
if(s == "query"){
ll l , r ;
cin>>l>>r ;
l-- , r-- ;
ll k = get(l,r,0,n,1) ;
cout<<(k == oo ? 0 : _-k+1)<<el ;
}
else{
ll x ;
cin>>x ;
update(x,x+1,0,n,1,_) ;
}
}
return ;
}
int main(){
ios_base::sync_with_stdio(0) , cin.tie(nullptr) , cout.tie(nullptr) ;
ll t = 1 ;
//cin>>t ;
while(t--){
solve() ;
}
return 0 ;
}