#include <stdio.h>
#include <stdlib.h>
int** alocirajmatricu(int n, int m)
{
  int** a=(int**)malloc(n*sizeof(int*));
  for(int i=0;i<n;i++)
    a[i]=(int*)malloc(m*sizeof(int));
  return a;
}
int** ucitaj(int n, int m)
{
  int** a=alocirajmatricu(n,m);
  int i,j;
  for(i=0;i<n;i++)
    for(j=0;j<m;j++) scanf("%d", &a[i][j]);
  return a;
}
void oslobodi(int** a, int n)
{
  for(int i=0;i<n;i++)
  {
    free(a[i]);
    a[i]=NULL;
  }
  free(a);
  a=NULL;
}
void promena(char s[], int l, int r)
{
  for(int i=l-1;i<r;i++)
  {
    if(s[i]=='0') s[i]='1';
    else s[i]='0';
  }
}
long int cena(char s[], int n, int c)
{
  int k=0,i,nul1=0,nul2=n;
  long int cena1=0,cena2=c;
  for(i=0;i<n;i++)
  {
    if(s[i]=='0')
    {
      if(k>c) cena1+=c;
      else cena1+=k;
      k=0;
    }
    else k++;
  }
  if(k>c) cena1+=c;
  else cena1+=k;
  k=0;
  while(s[nul1]!='1')
    nul1++;
  while(s[nul2-1]!='1')
    nul2--;
  for(i=nul1;i<nul2;i++)
  {
    if(s[i]=='1')
    {
      if(k>c) cena2+=c;
      else cena2+=k;
      k=0;
    }
    else k++;
  }
  if(k>c) cena2+=c;
  else cena2+=k;
  if(cena1<cena2) return cena1;
  return cena2;
}
int main(void)
{
  int n,c,q,i;
  scanf("%d%d%d", &n, &c, &q);
  char s[n];
  scanf("%s", s);
  int** a=ucitaj(q,2);
  for(i=0;i<q;i++)
  {
    promena(s,a[i][0],a[i][1]);
    printf("%ld\n", cena(s,n,c));
  }
}