#include <bits/stdc++.h>
using namespace std;
const long long posinf = 9223372036854775807;
const long long neginf = 9223372036854775808;
const unsigned long long ullinf = 18446744073709551615;
const unsigned long long bigprime = 2305843009213693951;
const unsigned long long smallprime = 2147483647;
const int prime = 3571;
const long long modbase = 1000000007;
const long long inv2mod = 500000004;
int main() {
  int n, k, t;
  cin >> n >> k;
  vector<int> pp;
  int cmn = 0;
  bool lmn = false;
  int res = 0;
  for (int i = 0; i < n; i++) {
    cin >> t;
    if (t < 0) {
      cmn++;
      if (!lmn) {
        lmn = true;
        res += 2;
      }
    } else {
      if (lmn) {
        pp.push_back(1);
        lmn = false;
      } else {
        if (!pp.empty()) pp[pp.size() - 1]++;
      }
    }
  }
  if (!cmn) {
    cout << 0;
    return 0;
  }
  if (cmn > k) {
    cout << -1;
    return 0;
  }
  k -= cmn;
  bool isl = false;
  int isln = 0;
  if (t >= 0 && !pp.empty()) {
    isl = true;
    isln = pp[pp.size() - 1];
    pp.pop_back();
  } else {
    res--;
  }
  sort(pp.rbegin(), pp.rend());
  while (!pp.empty()) {
    if (k >= pp[pp.size() - 1]) {
      k -= pp[pp.size() - 1];
      res -= 2;
      pp.pop_back();
    } else
      break;
  }
  if (isl) {
    if (k >= isln) {
      res--;
      k -= isln;
    }
  }
  cout << res;
  return 0;
}
