def coinChange_2(self, coins: List[int], amount: int) -> int:
    memo = [float('inf') for i in range((amount + 1))]
    memo[0] = 0
    for i in range((amount + 1)):
        for coin in coins:
            if (i < coin):
                continue
            memo[i] = min(memo[i], (memo[(i - coin)] + 1))
    print(memo)
    return ((- 1) if (memo[amount] == float('inf')) else memo[amount])
def coinChange_2(self, coins: List[int], amount: int) -> int:
    memo = [float('inf') for i in range((amount + 1))]
    memo[0] = 0
    for i in range((amount + 1)):
        for coin in coins:
            if (i < coin):
                continue
            memo[i] = min(memo[i], (memo[(i - coin)] + 1))
    print(memo)
    return ((- 1) if (memo[amount] == float('inf')) else memo[amount])