n,k=map(int,input().split()) dp=[[False]*(k+1) for i in range(n+1)] a=list(map(int,input().split()));dp[0][0]=True for i in range(n): for j in range(k+1): if not dp[i][j]: continue dp[i+1][j]=True if j+a[i]<=k: dp[i+1][j+a[i]]=True ans=0;c=dp[n][k] if not c: print(-1);exit() for i in range(k): dp[n][i]=False for i in range(n-1,-1,-1): s=True for j in range(k+1): if dp[i][j] and dp[i+1][j]: s=False if dp[i][j]: if j+a[i]<=k and dp[i+1][j+a[i]] or dp[i+1][j]: dp[i][j]=True else: dp[i][j]=False if s: ans+=1 print(ans)