#include <bits/stdc++.h>
#define MOD 1000000007
#define Tran_Hoan_Thien ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
#define fi first
#define se second
#define pb push_back
#define vi vector<int>
#define ll long long
#define vll vector<ll>
#define db double
#define pii pair<int,int>
#define endl "\n"
#define str string
#define pk pop_back
#define LB lower_bound
#define UB upper_bound
#define all(a) a.begin(),a.end()
#define sz(a) int((a).size())
#define rv(a) a.rbegin(),a.rend()
using namespace std;
ll gcd(ll a,ll b){return __gcd(a,b);}
ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
int main(){
#define TASK ""
if(fopen(TASK ".inp", "r")){
freopen(TASK ".inp", "r", stdin);
freopen(TASK ".out", "w", stdout);
}
freopen("Camdien.inp", "r", stdin);
freopen("Camdien.out", "w", stdout);
Tran_Hoan_Thien;
int n, m;
cin >> n >> m;
vector<int> a(n);
for (int &x : a) cin >> x;
sort(a.rbegin(), a.rend());
int total = 0;
int cnt = 0;
for (int i = 0; i < n; i++) {
if (i == 0) total += a[i];
else total += a[i] - 1;
cnt++;
if (total >= m) {
cout << cnt;
return 0;
}
}
cout << -1;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKI2RlZmluZSBUcmFuX0hvYW5fVGhpZW4gaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpOyBjb3V0LnRpZShOVUxMKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgdmkgdmVjdG9yPGludD4KI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSB2bGwgdmVjdG9yPGxsPgojZGVmaW5lIGRiIGRvdWJsZQojZGVmaW5lIHBpaSBwYWlyPGludCxpbnQ+CiNkZWZpbmUgZW5kbCAiXG4iCiNkZWZpbmUgc3RyICBzdHJpbmcKI2RlZmluZSBwayAgcG9wX2JhY2sKI2RlZmluZSBMQiAgbG93ZXJfYm91bmQKI2RlZmluZSBVQiAgdXBwZXJfYm91bmQKI2RlZmluZSBhbGwoYSkgYS5iZWdpbigpLGEuZW5kKCkKI2RlZmluZSBzeihhKSBpbnQoKGEpLnNpemUoKSkKI2RlZmluZSBydihhKSAgICBhLnJiZWdpbigpLGEucmVuZCgpCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmxsIGdjZChsbCBhLGxsIGIpe3JldHVybiBfX2djZChhLGIpO30gCmxsIGxjbShsbCBhLGxsIGIpe3JldHVybiBhL2djZChhLGIpKmI7fQppbnQgbWFpbigpewogICAgI2RlZmluZSBUQVNLICIiCiAgICBpZihmb3BlbihUQVNLICIuaW5wIiwgInIiKSl7CiAgICAgICAgZnJlb3BlbihUQVNLICIuaW5wIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbihUQVNLICIub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQogICAgICAgIAogICAgZnJlb3BlbigiQ2FtZGllbi5pbnAiLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oIkNhbWRpZW4ub3V0IiwgInciLCBzdGRvdXQpOyAKCiAgICBUcmFuX0hvYW5fVGhpZW47CiAgICBpbnQgbiwgbTsKICAgIGNpbiA+PiBuID4+IG07CiAgICB2ZWN0b3I8aW50PiBhKG4pOwogICAgZm9yIChpbnQgJnggOiBhKSBjaW4gPj4geDsKCiAgICBzb3J0KGEucmJlZ2luKCksIGEucmVuZCgpKTsgIAogICAgaW50IHRvdGFsID0gMDsKICAgIGludCBjbnQgPSAwOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBpZiAoaSA9PSAwKSB0b3RhbCArPSBhW2ldOyAgCiAgICAgICAgZWxzZSB0b3RhbCArPSBhW2ldIC0gMTsgICAgIAogICAgICAgIGNudCsrOwogICAgICAgIGlmICh0b3RhbCA+PSBtKSB7CiAgICAgICAgICAgIGNvdXQgPDwgY250OwogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICB9CiAgICBjb3V0IDw8IC0xOwogICAgcmV0dXJuIDA7Cn0K