Strategy: Agree beforehand that "Black" = the count of black hats is odd.
Prisoner 10 (back): Counts all 9 black hats visible ahead. If odd β calls "Black"; if even β calls "White". This encodes the parity. P10 has a 50% chance of being correct.
Prisoner 9: Heard P10's call (the parity). Counts the 8 black hats ahead of them. Uses the known parity to deduce whether their own hat is black or white. Always correct.
Each subsequent prisoner updates the running parity using all calls they've heard. Always correct.