Count shift groups
Your task
Two strings belong to the same shift group if one can be turned into the other by shifting every letter the same number of positions forward through the alphabet with wraparound (so "abc" -> "bcd" -> ... -> "xyz" -> "yza"; for example "az" and "ba" are in the same group because each letter advances by 1 with 'z' wrapping to 'a'). Given a list of lowercase strings, return the number of distinct shift groups. Strings of different lengths are never in the same group. The list may be empty.
Examples
num_shift_groups(strings: list[str]) -> intExample 1
Input
num_shift_groups(["abc", "bcd", "acef", "xyz", "az", "ba", "a", "z"])Output
4