#include <bits/stdc++.h>
using namespace std;
const long long gg = 0x7fffffff;
struct node {
  int p, e;
} per[230001];
int n, k, ks;
long long ans;
bool bo[230001];
bool cmp1(node a, node b) { return a.p > b.p; }
bool cmp2(node a, node b) { return a.e < b.e; }
long long check(int p) {
  long long ret = 0;
  memset(bo, 0, sizeof(bo));
  int cnt = 0, tot = 0;
  for (int i = 1; i <= n; i++)
    if (per[i].p >= p - 1) cnt++;
  cnt -= k - 1;
  for (int i = 1; i <= n && tot < cnt; i++) {
    if (per[i].p == p || per[i].p == p - 1) {
      ret += per[i].e;
      tot++;
      bo[i] = 1;
    }
  }
  for (int i = 1; i <= n && tot < p; i++) {
    if (!bo[i]) {
      ret += per[i].e;
      tot++;
    }
  }
  return ret;
}
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; i++) scanf("%d%d", &per[i].p, &per[i].e);
  sort(per + 1, per + 1 + n, cmp1);
  ks = per[k].p;
  sort(per + 1, per + 1 + n, cmp2);
  ans = gg * gg;
  for (int i = ks; i <= ks + 2; i++) {
    if (i > n) break;
    ans = min(ans, check(i));
  }
  if (ans == gg * gg) ans = -1;
  printf("%I64d\n", ans);
  return 0;
}
