To the OP:
I am not going to tell you what food to buy, but I'll tell you how I go about choosing what to feed so you can decide for yourself: Go to the place you have nearby that sells dog food. Look for one with a named meat or meat meal as the first ingredient. Something like "chicken" or "lamb meal." Not "meat meal" because you don't know what kind of meat it is. If the first ingredient is meat, I like to see a meat meal in there too, since meat still has the water in it, but meat meal is dried up and actually contains more protein and nutrition per pound than regular meat. So you're looking for a good amount of meat and/or meat meal high up on the ingredient list. No by-products.
Personally, I like to chose a product with no corn, soy, or wheat as these tend to be causes of allergies. Also, a lot of low-quality foods use these ingredients as fillers, and a lot of high quality foods don't have them. Some will argue that you can find a good quality food with corn, wheat, and soy but I'm just stating a general rule I like to follow.
Next, since you have a puppy, look for less than 1.5% calcium and less than 1.2% phosphorus MAX. Some products only list the minimum, and then you have to do more research or call the company. Studies have shown that dogs fed a high-calcium, high-phosphorus diet tended to develop more joint problems. The study did not determine an acceptable maximum, but 1.5/1.2 is used as a general rule of thumb by a lot of people. Again, some are of the opinion that this is a load of hooey. But I'm talking about what I do when I chose a food.
So: I've got a food with lots of named meat. No byproducts, no soy, no wheat, no corn. The cal/phos ratios are right. Is it in my budget? If yes, I buy a smallish bag and slowly switch my dog over to it to see how he does. If he does well, we have a winner. If he has soupy poops after switching slowly, or develops an itchy rash or stinky ears, I repeat the process with another food.