CSES - Shared codeLink to this code: https://cses.fi/paste/aa3e0eea8449aeef4bc1b8/
#include <bits/stdc++.h>
using namespace std;

typedef vector<int> vi;
typedef vector<long long> vl;
typedef pair<int, int> pii;
#define endl "\n"
#define debug(val) printf("check%d\n", val)
#define all(v) v.begin(), v.end()
#define pb push_back
#define mp make_pair
#define FF first
#define SS second
#define ll long long
#define ull unsigned long long
#define FOR(i, j, k, in) for (int i = j; i < k; i += in)
#define forr(k) for (int i = 0; i < k; i += 1)
#define For(j, k) for (int i = j; i < k; i += 1)
#define MOD 1000000007
#define clr(val) memset(val, 0, sizeof(val))
#define what_is(x) cerr << #x << " is " << x << endl;
#define OJ                            \
    freopen("input.txt", "r", stdin); \
    freopen("output.txt", "w", stdout);
#define FIO                           \
    ios_base::sync_with_stdio(false); \
    cin.tie(NULL);                    \
    cout.tie(NULL);

ll miniCoins(ll idx, ll sum, vl &v, vector<vector<ll>> &dp)
{

    if (idx == 0)
    {
        return sum % v[0] == 0 ? sum / v[0] : 1e8;
    }

    if (dp[idx][sum] != -1)
    {
        return dp[idx][sum];
    }
    ll pk = 1e8;

    if (sum - v[idx] >= 0)
    {
        // cout << "yes " << v[idx] << " is less " << sum << "\n";

        pk = 1 + miniCoins(idx, sum - v[idx], v, dp);
    }

    ll np = 0 + miniCoins(idx - 1, sum, v, dp);

    return dp[idx][sum] = min(pk, np);
}

int main()
{
    FIO;
    // OJ;

    ll n, s;
    cin >> n >> s;

    vl coins(n);
    vector<vector<ll>> dp(n, vector<ll>(s + 1, -1));
    forr(n)
    {
        cin >> coins[i];
    }

    ll ans = miniCoins(n - 1, s, coins, dp);

    ans == 1e8 ? cout << -1 << "\n" : cout << ans << "\n";
}