Given a list of strings, find the groups of strings that can be rotated to each other (so each character is changed by the same distance).
Input: ['abc', 'bcd', 'bde', 'cef', 'efg', 'zab']
Output: [['abc', 'bcd', 'efg', 'zab'], ['bde', 'cef']]
Two strings are in the same group if every character in one string can be shifted by the same amount to obtain the other string, with wraparound from 'z' to 'a'.
The key idea is to normalize each string by its shift pattern. Strings like <code>abc</code>, <code>bcd</code>, and <code>zab</code> share the same circular difference signature, so they belong to the same group. A hash map can be used to group strings by this signature in one pass over the input. This yields an efficient solution whose runtime is proportional to the total number of characters processed.