#include <bits/stdc++.h>
using namespace std;
struct A {
  long long int l, r;
};
vector<A> V;
int main() {
  long long int n, r;
  scanf("%lld%lld", &n, &r);
  for (long long int i = 1; i <= n; i++) {
    long long int v;
    scanf("%lld", &v);
    long long int lo, hi;
    if (v == 1) {
      lo = max(1LL, i - r + 1);
      hi = min(n, i + r - 1);
      A aa;
      aa.l = lo;
      aa.r = hi;
      V.push_back(aa);
    }
  }
  long long int sz = V.size();
  if (sz == 0) {
    printf("-1\n");
    return 0;
  }
  long long int last = 0;
  long long int ans = 0;
  for (long long int i = 0; i < sz; i++) {
    if (V[i].l > last + 1) {
      printf("-1\n");
      return 0;
    }
    if (V[i].l <= last + 1 && i + 1 < sz && V[i + 1].l <= last + 1) {
      continue;
    } else {
      ans++;
      last = V[i].r;
    }
    if (last >= n) break;
  }
  if (last < n) {
    printf("-1\n");
    return 0;
  }
  printf("%lld\n", ans);
  return 0;
}
