Решаем задачку «Coin Change»

Даны монеты разного номинала и некоторая сумма денег. Напишите функцию для расчета минимального количества монет, которыми можно выдать эту сумму. Если это невозможно, функция должна возвращать -1. Количество монет каждого номинала неограничено.