#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define all(v) v.begin(), v.end()
#define run ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);cerr.tie(0);
#define ms(a, x) memset(a, x, sizeof(a));
int dp[1000009];
int solve(int n, int k, vector<int> &a)
{
if (k < 0)
return INT_MAX;
if (k == 0)
return 0;
if (dp[k] != -1)
return dp[k];
int ans = INT_MAX;
for (int i = 0; i < n; i++)
ans = min(ans, 1 + solve(n, k - a[i], a));
return dp[k] = ans;
}
signed main()
{
run;
int n, i, k, ans = 0;
ms(dp, -1);
cin >> n >> k;
vector<int> a(n, 0);
for (i = 0; i < n; i++)
cin >> a[i];
sort(all(a));
ans = solve(n, k, a);
if (ans >= INT_MAX)
ans = -1;
cout << ans;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZyBpbnQKI2RlZmluZSBhbGwodikgdi5iZWdpbigpLCB2LmVuZCgpCiNkZWZpbmUgcnVuIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpO2Npbi50aWUoMCk7Y291dC50aWUoMCk7Y2Vyci50aWUoMCk7CiNkZWZpbmUgbXMoYSwgeCkgbWVtc2V0KGEsIHgsIHNpemVvZihhKSk7CgppbnQgZHBbMTAwMDAwOV07CmludCBzb2x2ZShpbnQgbiwgaW50IGssIHZlY3RvcjxpbnQ+ICZhKQp7CiAgICBpZiAoayA8IDApCiAgICAgICAgcmV0dXJuIElOVF9NQVg7CgogICAgaWYgKGsgPT0gMCkKICAgICAgICByZXR1cm4gMDsKCiAgICBpZiAoZHBba10gIT0gLTEpCiAgICAgICAgcmV0dXJuIGRwW2tdOwogICAgaW50IGFucyA9IElOVF9NQVg7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgIGFucyA9IG1pbihhbnMsIDEgKyBzb2x2ZShuLCBrIC0gYVtpXSwgYSkpOwogICAgCgogICAgcmV0dXJuIGRwW2tdID0gYW5zOwp9CgpzaWduZWQgbWFpbigpCnsKCiAgICBydW47CgogICAgaW50IG4sIGksIGssIGFucyA9IDA7CiAgICBtcyhkcCwgLTEpOwoKICAgIGNpbiA+PiBuID4+IGs7CgogICAgdmVjdG9yPGludD4gYShuLCAwKTsKCiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgIGNpbiA+PiBhW2ldOwoKICAgIHNvcnQoYWxsKGEpKTsKCiAgICBhbnMgPSBzb2x2ZShuLCBrLCBhKTsKICAgIGlmIChhbnMgPj0gSU5UX01BWCkKICAgICAgICBhbnMgPSAtMTsKCiAgICBjb3V0IDw8IGFuczsKfQ==