""" 1861: dpだよな O(NK) dpをする iが必須か? は、 i-1 と i+1 を見ればいい """ import sys from sys import stdin N,K = map(int,stdin.readline().split()) A = list(map(int,stdin.readline().split())) dpL = [[False] * (K+1) for i in range(N+1)] dpR = [[False] * (K+1) for i in range(N+1)] dpL[0][0] = True for i in range(N): for nk in range(K+1): if dpL[i][nk]: dpL[i+1][nk] = True if nk + A[i] <= K: dpL[i+1][nk + A[i]] = True if dpL[-1][-1] == False: print (-1) sys.exit() A.reverse() dpR[0][0] = True for i in range(N): for nk in range(K+1): if dpR[i][nk]: dpR[i+1][nk] = True if nk + A[i] <= K: dpR[i+1][nk + A[i]] = True dpR.reverse() ans = N for v in range(1,N+1): #vが必要ないか? #dpL[v-1] と dpR[v]を確認 flag = False for lk in range(K+1): if dpL[v-1][lk] and dpR[v][K-lk]: flag = True break if flag: ans -= 1 print (ans)