Given a value val and coin denominations coins[], return the minimum number of coins to necessary to make val dollars