The first thing is that bulls and cows are reversed, a bull was supposed to mean the letter is in the exact position (something like bull for bullseye).
But even ignoring that the logic is flawed.
Some tests with magic word = ‘google’ :
planes - Expected: 0Cows, 2Bulls - Result: 0Cows, 1Bull
googla - Expected: 5Cows, 0Bulls - Result: 5Cows, 5Bulls
moogle - Expeced: 5Cows, 0Bulls - Result: 5Cows, 6Bulls
gggggg - Expected: 2Cows, 4Bulls - Result: 2Cows, 7Bulls
oooooo - Expected: 2Cows, 4Bulls - Result: 2Cows, 2Bulls
Maybe you may not agree with me on the expectations, but at least the results should be consistent. The first step is to define what rules should the non-isograms follow. Then you can test the game as I did, comparing what you would expect if you follow the rules with what the game says.