#include<bits/stdc++.h>
using namespace std;
int minCoin(vector<int> &coins, int amount){
int maxVal = amount + 1;
vector<int> dp(amount + 1, maxVal);
dp[0] = 0;
for(int a = 1; a <= amount; a++){
for(int c:coins){
if(a - c >= 0){
dp[a] = min(dp[a], 1 + dp[a-c]);
}
}
}
if(dp[amount] != maxVal)
return dp[amount];
else
return -1;
}
int main(){
int n, amount;
cin >> n >> amount;
vector<int> coins(n);
for(int i = 0; i < n; i++) cin >> coins[i];
int result = minCoin(coins, amount);
cout << result << endl;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtaW5Db2luKHZlY3RvcjxpbnQ+ICZjb2lucywgaW50IGFtb3VudCl7CiAgICBpbnQgbWF4VmFsID0gYW1vdW50ICsgMTsKCiAgICB2ZWN0b3I8aW50PiBkcChhbW91bnQgKyAxLCBtYXhWYWwpOwogICAgICAgIGRwWzBdID0gMDsKICAgICAgICBmb3IoaW50IGEgPSAxOyBhIDw9IGFtb3VudDsgYSsrKXsKICAgICAgICAgICAgZm9yKGludCBjOmNvaW5zKXsKICAgICAgICAgICAgICAgIGlmKGEgLSBjID49IDApewogICAgICAgICAgICAgICAgICAgIGRwW2FdID0gbWluKGRwW2FdLCAxICsgZHBbYS1jXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoZHBbYW1vdW50XSAhPSBtYXhWYWwpCiAgICAgICAgICAgIHJldHVybiBkcFthbW91bnRdOwogICAgICAgIGVsc2UKICAgICAgICAgICAgcmV0dXJuIC0xOwp9CgppbnQgbWFpbigpewogICAgaW50IG4sIGFtb3VudDsKICAgIGNpbiA+PiBuID4+IGFtb3VudDsKCiAgICB2ZWN0b3I8aW50PiBjb2lucyhuKTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspIGNpbiA+PiBjb2luc1tpXTsKCiAgICBpbnQgcmVzdWx0ID0gbWluQ29pbihjb2lucywgYW1vdW50KTsKCiAgICBjb3V0IDw8IHJlc3VsdCAgPDwgZW5kbDsKfQo=