#include<bits/stdc++.h>
using namespace std;
const int MAXN=2e5 + 5;
#define ll long long
int p[8*MAXN];int sum[8*MAXN];int add[8*MAXN];
void build(int k,int l,int r){
if(l==r){
sum[k]=p[l];
return ;
}
int mid=(l+r)/2;
build(k<<1,l,mid);
build(k<<1|1,mid+1,r);
sum[k]=sum[k<<1]+sum[k<<1|1];
}
void push_down(int k,int len){
if(add[k]==0)
return;
add[k<<1]^=1;
add[k<<1|1]^=1;
sum[k<<1]=(len-(len>>1))-sum[k<<1];
sum[k<<1|1]=(len>>1)-sum[k<<1|1];
add[k]==0;
}
void change(int a,int b,int k,int l,int r){
if(a<=l&&r<=b){
sum[k]=r-l+1-sum[k];
add[k]^=1;
return;
}
int mid=(l+r)/2;
push_down(k,r-l+1);
if(a<=mid)change(a,b,k*2,l,mid);
if(b>mid)change(a,b,k*2+1,mid+1,r);
sum[k]=sum[k<<1]+sum[k<<1|1];
}
int query(int a,int b,int k,int l,int r){
if(a<=l&&r<=b)
return sum[k];
int mid=(l+r)/2;
push_down(k,r-l+1);
int res=0;
if(a<=mid)
res+=query(a,b,k<<1,l,mid);
if(b>mid)
res+=query(a,b,k<<1|1,mid+1,r);
return res;
}
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
char ch;
cin>>ch;
p[i]=ch-'0';
}
build(1,1,n);
for(int i=0;i<m;i++){
int j;cin>>j;
if(j==0){
int a,b;
cin>>a>>b;
change(a,b,1,1,n);
}
if(j==1){
int a,b;cin>>a>>b;
cout<<query(a,b,1,1,n)<<endl;
}
}
return 0;
}