text='aaba'; start=3; minimum='aaab'; shortcut_start=0; shortcut_result='aaba'
text='0010'; start=3; minimum='0001'; shortcut_start=0; shortcut_result='0010'
text='alfa'; start=3; minimum='aalf'; shortcut_start=3; shortcut_result='aalf'
text='baba'; start=1; minimum='abab'; shortcut_start=1; shortcut_result='abab'
text='aaaa'; start=0; minimum='aaaa'; shortcut_start=0; shortcut_result='aaaa'
text=''; start=0; minimum=''; shortcut_start=0; shortcut_result=''
trace aaba without shortcut:
j=1; candidate=0; updates=[]; early=False
j=2; candidate=0; updates=[]; early=False
j=3; candidate=0; updates=[]; early=False
j=4; candidate=0; updates=[]; early=False
j=5; candidate=3; updates=[(0, 3)]; early=False
j=6; candidate=3; updates=[]; early=False
j=7; candidate=3; updates=[]; early=False
exhaustive_strings=7375; cyclic_invariance=22; regression_family=99; invalid_inputs=4
PASS: minimum rotation string agrees with enumeration; tied positions may coexist
