Given an array of coin denominations and a target amount, return the fewest number of coins needed to make that amount. If impossible, return -1. You may use each coin an unlimited number of times.
coins = [1,2,5], amount = 113coins = [2], amount = 3-1