#include <iostream>
using namespace std;
void pretvori(string& s, int& a){
	if(s.back()=='0') a = 0;
	else a = 1;
	s.pop_back();
}
int cena(int a[], int n, int c){
	int l=1,d=n,ce=0;
	while(a[l] == 0 && l<n) l++;
	if(l<n) {
	while(a[d] == 0) d--;
	for(int i = l+1; i<d;i++){
		if(a[i] == 0) ce++;
		}
	return c+ce;	
	}
	else return 1;
}
int jed(int a[],int n){
	int b = 0;
	for(int i = 1; i<=n; i++) 
	if(a[i] == 1) b++;
	return b;
}
int najmanja_cena(int a[],int n, int c){
	if(cena(a,n,c)<jed(a,n)) return cena(a,n,c);
	else return jed(a,n);
}

int main(int argc, char** argv) {
	string s;
	int n,c,q;
	cin>>n>>c>>q;
	cin>>s;
	int l[q];
	int d[q];
	for(int i=0; i<q;i++){
		cin>>l[i]>>d[i];
	}
	int niz[n+1];
	for(int i = n; i>0; i--){
		pretvori(s,niz[i]);
	}
	for(int j=0;j<q;j++){
		for(int i = l[j]; i<=d[j]; i++){
			if(niz[i] == 1) niz[i]=0;
			else niz[i]=1;
		}
		cout<<najmanja_cena(niz,n,c)<<endl;;
	}
	return 0;
}