One of the things I enjoy about duoLingo is that it makes me think about a language I thought I knew well. Normally I just open my mouth and the words come out. Not always a good thing.
There appears to be a nuanced difference between congratulations on and congratulations for, both of which have their place.
In the case of this sentence, one could legitimately view "the program" as being an achievement (perhaps one is talking to the creator), hence congratulations for should be accepted. IMHO.
I can understand the confusion because pelo (por+o) appears to directly translate as 'for the', but in English we wouldn't congratulate someone FOR something, we would congratulate them ON something. For example, congratulations on your wedding day, on your baby, on your exams. You can thank someone FOR something, you can ask someone FOR something, but to congratulate, use ON :-)
DL should be using more natural and common either Portugese or English examples. In Engish it would common to congratulate someone on their engagement, wedding, achievement but what is meant by program? In Portuguese, programa can have a seedy context. Again, wouldn't another word have been a better choice and example?