#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1000;
int A[MAXN];
long long int N, r;
int isPossible() {
  int range = 0;
  bool fatto[MAXN];
  int last = 0;
  long long int attuale = 0;
  for (int i = 0; i < N && last < N; i++) {
    bool we = false;
    for (int j = max(last - r + 1, (long long int)0); j < min(last + r, N);
         j++) {
      if (A[j]) {
        we = true;
        attuale = j;
      }
    }
    if (!we) return -1;
    for (int m = last; m < min(attuale + r, N); m++) {
      fatto[m] = true;
    }
    last = attuale + r;
    i = last - 1;
    range++;
  }
  for (int i = 0; i < N; i++) {
    if (!fatto[i]) return -1;
  }
  return range;
}
int main() {
  int risultato = -1;
  cin >> N >> r;
  int inizio = 0;
  int fine = 0;
  int medio;
  for (int i = 0; i < N; i++) {
    cin >> A[i];
    if (A[i]) fine++;
  }
  cout << isPossible();
  return 0;
}
