#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
const int INF = 0x3c3c3c3c;
const long long INFL = 0x3c3c3c3c3c3c3c3c;
const int MAX_N = 102;
void NO() {
  printf("-1");
  exit(0);
}
int n, k;
int t[200002];
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 0; i < n; ++i) scanf("%d", &t[i]);
  int prev = -1;
  vector<int> add2, add1;
  int cntMinus = 0;
  int ans = 0;
  for (int i = 0; i < n; ++i) {
    if (i > 0) {
      if ((t[i - 1] >= 0 && t[i] < 0) || (t[i - 1] < 0 && t[i] >= 0)) ans++;
    } else if (t[i] < 0)
      ans++;
    if (t[i] < 0) {
      cntMinus++;
      if (prev != -1 && i - prev - 1 > 0) add2.push_back(i - prev - 1);
      prev = i;
    }
  }
  if (prev != -1 && n - prev - 1 > 0) add1.push_back(n - prev - 1);
  if (cntMinus > k) NO();
  sort(add2.begin(), add2.end());
  k -= cntMinus;
  for (int i = 0; i < add2.size(); i++) {
    if (add2[i] > k) break;
    k -= add2[i];
    ans -= 2;
  }
  if (add1.size() != 0 && k >= add1[0]) ans--;
  printf("%d", ans);
  return 0;
}
