You are given an array coins of distinct positive integers representing coin denominations, and an integer amount.
Return the fewest number of coins needed to make up exactly amount. You may use each denomination an unlimited number of times.
If that amount cannot be made up by any combination of the coins, return -1. (Making up 0 requires 0 coins.)
[1,2,5], 11[2], 3[1], 0[1,3,4,5], 7[2,5,10,1], 27[186,419,83,408], 6249[7], 14