#include <bits/stdc++.h>
int compare(const void *a, const void *b) {
  int *pa = (int *)a;
  int *pb = (int *)b;
  return *pb - *pa;
}
int main() {
  int n, k, i, head, tail, a, b;
  static int aa[200000], bb[200000];
  scanf("%d%d", &n, &k);
  for (i = 0; i < n; i++) scanf("%d", &aa[i]);
  a = b = 0;
  head = -1;
  for (i = 0; i < n; i++)
    if (aa[i] < 0) {
      if (head == -1)
        head = a;
      else if (a > 0)
        bb[b++] = a;
      a = 0;
    } else
      a++;
  tail = a;
  if (head == -1)
    printf("0\n");
  else {
    int m, c1, c2, c;
    qsort(bb, b, sizeof(*bb), compare);
    m = n - head;
    c1 = 1;
    for (i = 0; i < b && m > k; i++) {
      m -= bb[i];
      c1 += 2;
    }
    if (m > k) c1 = INT_MAX;
    m = n - head - tail;
    c2 = 2;
    for (i = 0; i < b && m > k; i++) {
      m -= bb[i];
      c2 += 2;
    }
    if (m > k) c2 = INT_MAX;
    c = c1 < c2 ? c1 : c2;
    printf("%d\n", c == INT_MAX ? -1 : c);
  }
  return 0;
}
