def main() -> None: N, M = (int(elt) for elt in input().split()) A = [int(elt) for elt in input().split()] K = [int(elt) for elt in input().split()] tot = sum(a * k for (a, k) in zip(A, K)) - M # print(f"DEBUG: tot={tot}") MAX_V = A[N - 1] * A[N - 1] INF = 10**18 dp = [INF] * (MAX_V + 1) dp[0] = 0 for i in range(N): for j in range(MAX_V + 1): if j - A[i] >= 0: dp[j] = min(dp[j], dp[j - A[i]] + 1) # print(f"DEBUG: dp={dp}") ans = INF for j in range(MAX_V + 1): if dp[j] == INF: continue rem = tot - j if rem >= 0 and rem % A[N - 1] == 0: ans = min(ans, dp[j] + (rem // A[N - 1])) if ans == INF: ans = -1 print(ans) return if __name__ == '__main__': main()