#include <bits/stdc++.h>
using namespace std;
const long long int MAX = -1000000000000000000;
const long long int MIN = 1000000000000000000;
const long long int inf = 1000000000000000000;
const long long int KOK = 100000;
const long long int LOG = 30;
const long long int li = 105;
const long long int mod = 1000000007;
long long int n, m, cev, b, a[li], k, dp[105][100005], PS[li][li];
string s;
vector<int> v;
long long int f(long long int sira, long long int topl) {
  long long int mn = inf;
  if (topl <= 0) return 0;
  if (sira > n) {
    return inf;
  }
  if (~dp[sira][topl]) return dp[sira][topl];
  for (int i = sira; i <= n; i++) {
    mn = min(mn, f(i + 1, topl - PS[sira][i] + PS[sira][sira - 1]) + 1);
  }
  return dp[sira][topl] = mn;
}
int main() {
  memset(dp, -1, sizeof(dp));
  scanf("%lld %lld", &n, &m);
  for (long long int i = 1; i <= n; i++) {
    scanf("%lld", &a[i]);
  }
  sort(a + 1, a + n + 1);
  reverse(a + 1, a + n + 1);
  for (long long int i = 1; i <= n; i++) {
    long long int at = 0;
    for (long long int j = i; j <= n; j++) {
      PS[i][j] = PS[i][j - 1] + max(a[j] - at, 0ll);
      at++;
    }
  }
  long long int yess = f(1, m);
  if (yess >= inf) {
    printf("-1\n");
    return 0;
  }
  printf("%lld\n", yess);
  return 0;
}
