#include <bits/stdc++.h>
std::mt19937 rd(std::chrono::steady_clock::now().time_since_epoch().count());
using namespace std;
namespace io {
template <typename T>
inline void read(T& a) {
  int c = getchar(), sign = 0;
  a = 0;
  while (c < '0' || c > '9') sign += (c == '-'), c = getchar();
  while (c >= '0' && c <= '9') a = (a << 1) + (a << 3) + c - 48, c = getchar();
  if (sign & 1) a = -a;
}
template <typename T, typename... _T>
inline void read(T& a, _T&... argc) {
  read(a);
  read(argc...);
}
template <typename T>
inline void Write(T a) {
  if (a > 9) Write(a / 10);
  putchar(a % 10 + '0');
}
template <typename T>
inline void write(T a, char ch = ' ') {
  if (a < 0) putchar('-'), a = -a;
  Write(a);
  putchar(ch);
}
template <typename T>
inline void Min(T& a, T b) {
  a = min(a, b);
}
template <typename T>
inline void Max(T& a, T b) {
  a = max(a, b);
}
template <typename T, typename... _T>
inline void Min(T& a, T b, _T... c) {
  Min(a, b);
  Min(a, c...);
}
template <typename T, typename... _T>
inline void Max(T& a, T b, _T... c) {
  Max(a, b);
  Max(a, c...);
}
}  // namespace io
using namespace io;
const int maxn = 1 << 21;
const int N = 3e5 + 3;
const int mod = 998244353;
int n, m, q;
int dem[N], id[N], chot[N], a[N];
int k, h;
long long t[N + 3];
long long dp[N][2];
string s;
bool kt[N];
map<int, int> maps;
vector<pair<int, int>> edge[N];
map<int, int>::iterator it;
template <typename T>
void answer(T x) {
  cout << x;
  exit(0);
}
void putstring(string x, char ch = ' ') {
  for (char c : x) putchar(c);
  putchar(ch);
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(NULL);
  cin >> n >> k >> s;
  deque<pair<long long, int>> pq;
  memset(dp, 127, sizeof dp);
  dp[0][0] = dp[0][1] = 0;
  long long ans = 1e18;
  for (int i = 1; i <= n; ++i) {
    while (!pq.empty() && pq.front().second < i - k) pq.pop_front();
    if (!pq.empty()) dp[i][0] = pq.front().first;
    dp[i][1] = min(dp[i - 1][0], dp[i - 1][1]) + i;
    if (s[i - 1] == '1') {
      Min(dp[i][1],
          min(dp[max(i - k - 1, 0)][0], dp[max(i - k - 1, 0)][1]) + i);
      while (!pq.empty() && pq.back().first >= dp[i][1]) pq.pop_back();
      pq.push_back({dp[i][1], i});
    }
  }
  cout << min(dp[n][0], dp[n][1]);
}
