#include <bits/stdc++.h>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
const int N_MAX = 5e3 + 5, G_MAX = 1e4;
int g, w, dp[2][G_MAX + 5], minim = 1e9;
struct generator {
int energie, cost;
}v[N_MAX];
int main() {
fin >> g >> w;
/// dp[1][j] = cea mai buna submultime pana in i care are cost minim si energie j
/// dp[0][j] = cea mai buna submultime pana in i - 1 care are cost minim si energie j
for (int i = 1; i <= g; i++)
fin >> v[i].energie >> v[i].cost;
for (int i = 1; i <= G_MAX; i++)
dp[0][i] = 1e9;
for (int i = 1; i <= g; i++) {
for (int j = 1; j <= G_MAX; j++) {
if (v[i].energie > j)
dp[1][j] = dp[0][j];
else
dp[1][j] = min(dp[0][j], dp[0][j - v[i].energie] + v[i].cost);
}
for (int j = 1; j <= G_MAX; j++) {
if (j >= w)
minim = min(minim, dp[1][j]);
dp[0][j] = dp[1][j];
dp[1][j] = 1e9;
}
}
if (minim == 1e9)
minim = -1;
fout << minim << "\n";
return 0;
}