#include <bits/stdc++.h>
#include <cassert>
using namespace std;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
using pi = pair<int, int>;
using pl = pair<ll, ll>;
using pd = pair<double, double>;
using pld = pair<ld, ld>;
int main()
{
ifstream cin("energii.in");
ofstream cout("energii.out");
int G, W;
cin >> G >> W;
vector<int> dp(W + 1, 2e9);
while (G--)
{
int EG, CG;
cin >> EG >> CG;
for (int i = W; i > EG; --i)
{
// cerr << "bef: " << dp[i] << '\n';
dp[i] = min(dp[i], CG + dp[i - EG]);
// cerr << "aft: " << dp[i] << '\n';
}
for (int i = 1; i <= min(W, EG); ++i)
{
dp[i] = min(dp[i], CG);
}
// #define dbg
#ifdef dbg
cerr << "dp: ";
for (const int nr : dp)
{
cerr << nr << " ";
}
cerr << '\n';
#endif
}
cout << (dp[W] == 2e9 ? -1 : dp[W]);
}