#include <bits/stdc++.h>
using namespace std;
int n,c,q;
#define MAXN 200001
 class cvor{
     public:

    int data[2][2];

        cvor(char ch='2'){
            if(ch=='2'){
                    data[0][0]=0;
            data[0][1]=0;
            data [1][0]=0;
            data[1][1]=0;
                return;
            }
             data[0][0]=(ch=='1');
        for(int x=0;x<2;x++){
            for(int y=0;y<2;y++){
                if(y==0&&x==0){continue;}
                data[x][y]=(ch=='0')+c;
            }
        }

        }
    cvor operator +(cvor R){
        cvor U;
        cvor L=(*this);
        for(int x=0;x<2;x++){
            for(int y=0;y<2;y++){
                U.data[x][y]=min(L.data[x][1]+R.data[1][y]-c,(min(L.data[x][1],L.data[x][0])+min(R.data[0][y],R.data[1][y])));
            }
        }
        return U;
    }
    cvor operator !(){
        cvor rez=(*this);
        rez=cvor((!rez.data[0][0])+'0');
        return rez;

    }
    int operator ~(){
        return min(data[0][0],min(data[0][1],min(data[1][0],data[1][1])));
    }

 };
 cvor t[4*MAXN];


 void build(string &s, int v, int tl, int tr) {
    if (tl == tr) {
        t[v] = cvor(s[tl]);
    } else {
        int tm = (tl + tr) / 2;
        build(s, v*2, tl, tm);
        build(s, v*2+1, tm+1, tr);
        t[v] = t[v*2] + t[v*2+1];
    }
}
cvor sum(int v, int tl, int tr, int l, int r) {
    if (l > r)
        return 0;
    if (l == tl && r == tr) {
        return t[v];
    }
    int tm = (tl + tr) / 2;
    return sum(v*2, tl, tm, l, min(r, tm))
           + sum(v*2+1, tm+1, tr, max(l, tm+1), r);
}

void update(int v, int tl, int tr, int pos) {
    if (tl == tr) {
        t[v] = !t[v];
    } else {
        int tm = (tl + tr) / 2;
        if (pos <= tm)
            update(v*2, tl, tm, pos);
        else
            update(v*2+1, tm+1, tr, pos);
        t[v] = t[v*2] + t[v*2+1];
    }
}

int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >>n>>c>>q;
string s;
cin >>s;

int q0L,q0R;
cin >>q0L>>q0R;
for(int i=q0L-1;i<q0R;i++){
    s[i]=(!(s[i]-'0'))+'0';
}
build(s,1,0,n-1);
cout <<~sum(1,0,n-1,0,n-1)<<endl;
for(int i=0;i<q-1;i++){
    int l,r;
    cin >>l>>r;
   /* if(l!=r){
        cerr<<"PANIK!"<<endl;
        return 0;
    }*/
    ///KALM!
    l--;
    r--;
    for(int x=l;x<=r;x++)
    update(1,0,n-1,x);

    cout <<~sum(1,0,n-1,0,n-1)<<endl;

}
return 0;

}