Let's say I have different bundles of products, each associated with a price.

```
Name               Price      Products
Fruit Overdose     5$         2 Apples, 1 Orange, 1 Banana
Doctors Darling    1$         1 Apple
The Exotic         3.50$      2 Oranges, 1 Banana
Vitamin C          1.5$       1 Orange

```

And I have a shopping list, e.g. I want to buy: 

```
4 Apples, 1 Orange, 2 Bananas.

```

The question
------------

How would I go about finding the **cheapest combination of bundles** to buy for the given shopping list? **Buying more than requested** by the shopping list **is valid**.

I just need a language agnostic hint how I could approch this problem most efficiently. 
My real world problem is a little bit more complex also including a list of products I already own; but this shouldn't really matter too much.