Это забавная проблема! Сначала вам понадобится словарь. По соображениям производительности, храните это в хэш-наборе (возможно, можете использовать тип словаря в Python). Затем вы можете перебирать каждую возможную строку («i», «ia», «iam», ... «n11», «1», «11», «1») и проверять совпадения в словаре. Затем необходимо выполнить итерации по этим совпадениям, пока не будет получен непрерывный набор без перекрытий.
Это было бы быстро и грязно. Возможно, есть более быстрые способы сделать это.