#include <bits/stdc++.h>
using namespace std;
int n, k, ans, m, la;
struct node {
  int a, b;
} q[20005];
bool cmp(node t1, node t2) {
  return (t1.a < t2.a) || (t1.a == t2.a && t1.b < t2.b);
}
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 1, x; i <= n; i++) {
    scanf("%d", &x);
    if (x == 1) m++, q[m].a = max(i - k + 1, 1), q[m].b = min(n, i + k - 1);
  }
  sort(q + 1, q + m + 1, cmp);
  m++, q[m].a = n + 1;
  for (int i = 1; i <= m; i++) {
    if (q[i].a > q[la].b + 1) {
      if (i - 1 != la && q[i - 1].a <= q[la].b + 1)
        la = i - 1, ans++;
      else {
        printf("-1\n");
        return 0;
      }
    }
  }
  if (q[la].b < n) {
    printf("-1\n");
    return 0;
  }
  printf("%d\n", ans);
  return 0;
}
