#include<bits/stdc++.h>
using namespace std;
#define int long long
int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=x*10+ch-'0';
ch=getchar();
}
return x*f;
}
void write(int x){
if(x<0){
putchar('-');
x=-x;
}
if(x>9)
write(x/10);
putchar(x%10+'0');
return ;
}
int n,m,t,l[1010],r[1010],sum[1010],cha[1010],to[200020];
string s;
bool c[200020];
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
char a;
cin>>a;
c[i]=a-'0';
}
t=sqrt(n);
for(int i=1;i<=t;i++){
l[i]=(i-1)*t+1;
r[i]=i*t;
}
if(r[t]<n){
l[++t]=r[t-1]+1;
r[t]=n;
}
for(int i=1;i<=t;i++){
for(int j=l[i];j<=r[i];j++){
to[j]=i;
sum[i]+=c[j];
}
}
while(m--){
int op,ll,rr;
cin>>op>>ll>>rr;
if(op==0){
if(to[ll]==to[rr])
for(int i=ll;i<=rr;i++){
if(c[i]){
c[i]=0;
sum[to[ll]]--;
}
else{
c[i]=1;
sum[to[ll]]++;
}
}
else{
for(int i=ll;i<=r[to[ll]];i++){
if(c[i]){
c[i]=0;
sum[to[ll]]--;
}
else{
c[i]=1;
sum[to[ll]]++;
}
}
for(int i=l[to[rr]];i<=rr;i++){
if(c[i]){
c[i]=0;
sum[to[rr]]--;
}
else{
c[i]=1;
sum[to[rr]]++;
}
}
for(int i=to[ll]+1;i<=to[rr]-1;i++)
cha[i]^=1;
}
}
else{
int ans=0;
if(to[ll]==to[rr])
for(int i=ll;i<=rr;i++)
ans+=(c[i]^cha[to[ll]]);
else{
for(int i=ll;i<=r[to[ll]];i++)
ans+=(c[i]^cha[to[ll]]);
for(int i=l[to[rr]];i<=rr;i++)
ans+=(c[i]^cha[to[rr]]);
for(int i=to[ll]+1;i<=to[rr]-1;i++){
if(cha[i])
ans+=r[i]-l[i]+1-sum[i];
else
ans+=sum[i];
}
}
cout<<ans<<endl;
}
}
return 0;
}