3 15
1
5
12
0 - 0
1 - 1
2 - 1, 1
3 - 1, 1, 1
4 - 1, 1, 1, 1
5 - 5
6 - 5, 1
7 - 5, 1, 1
8 - 5, 1, 1, 1
dp[0] = 0
dp[1] = dp[1-1] + 1
dp[2] = dp[2-1] + 1
n, k = map(int, input().split())
coin = []
DP = [0 for _ in range(k + 1)]
for i in range(n):
coin.append(int(input()))
for i in range(1, k + 1):
check = []
# 각 코인을 순환
for j in coin:
# 코인을 순환하면서 불가능하지 않는 경우를 지속적으로 더해나감
if j <= i and DP[i - j] != -1:
check.append(DP[i - j])
# 비어있으면 불가능하다는 의미
if not check:
DP[i] = -1
# 비어 있지 않으면 최소 개수 + 1
else:
DP[i] = min(check) + 1
print(DP[k])