#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000100;
int n, k, l;
char input[maxn];
bool bitovi[maxn];
int suma[maxn];
int rj;
void daj_sumu() {
  int tr_suma = 0;
  for (int i = 0; i < n; i++) {
    tr_suma += bitovi[i];
    if (i - l >= 0) tr_suma -= bitovi[i - l];
    suma[i] = tr_suma;
  }
  return;
}
int dp[maxn];
int kolko[maxn];
int rez(int cijena) {
  for (int i = 0; i < n; i++) {
    if (i < l) {
      if (suma[i] - cijena > 0)
        dp[i] = suma[i] - cijena;
      else
        dp[i] = 0;
      if (dp[i])
        kolko[i] = 1;
      else
        kolko[i] = 0;
      continue;
    }
    dp[i] = dp[i - 1];
    kolko[i] = kolko[i - 1];
    if (dp[i - l] + suma[i] - cijena > dp[i]) {
      dp[i] = dp[i - l] + suma[i] - cijena;
      kolko[i] = kolko[i - l] + 1;
    }
  }
  return kolko[n - 1];
}
int br_jedinica = 0;
void izracunaj() {
  rj = -1;
  int lo = 0, hi = l, mid;
  while (lo < hi) {
    mid = (lo + hi + 1) / 2;
    if (rez(mid) >= k)
      lo = mid;
    else
      hi = mid - 1;
  }
  int uzeo = rez(lo);
  if (uzeo < k) {
    rj = br_jedinica;
    return;
  }
  rj = max(rj, dp[n - 1] + uzeo * lo - (uzeo - k) * (lo + 1));
  return;
}
int krj;
int main() {
  scanf("%d%d%d", &n, &k, &l);
  scanf("%s", input);
  if ((long long)k * l >= n) {
    printf("0\n");
    return 0;
  }
  for (int i = 0; i < n; i++) {
    if (input[i] >= 'a' && input[i] <= 'z') {
      bitovi[i] = 1;
      br_jedinica++;
    }
  }
  daj_sumu();
  izracunaj();
  krj = br_jedinica - rj;
  br_jedinica = n - br_jedinica;
  for (int i = 0; i < n; i++) bitovi[i] = !bitovi[i];
  daj_sumu();
  izracunaj();
  krj = min(krj, br_jedinica - rj);
  printf("%d\n", krj);
  return 0;
}
