def guess_fused_orths(word, ud_forms):
if word == "<STR_LIT>".join(ud_forms):<EOL><INDENT>return ud_forms<EOL><DEDENT>elif len(word) == sum(len(subtoken) for subtoken in ud_forms):<EOL><INDENT>output = []<EOL>remain = word<EOL>for subtoken in ud_forms:<EOL><INDENT>assert len(subtoken) >= <NUM_LIT:1><EOL>output.append(remain[: len(subtoken)])<EOL>remain = remain[len(subtoken) :]<EOL><DEDENT>assert len(remain) == <NUM_LIT:0>, (word, ud_forms, remain)<EOL>return output<EOL><DEDENT>else:<EOL><INDENT>first = word[: len(word) - (len(ud_forms) - <NUM_LIT:1>)]<EOL>output = [first]<EOL>remain = word[len(first) :]<EOL>for i in range(<NUM_LIT:1>, len(ud_forms)):<EOL><INDENT>assert remain<EOL>output.append(remain[:<NUM_LIT:1>])<EOL>remain = remain[<NUM_LIT:1>:]<EOL><DEDENT>assert len(remain) == <NUM_LIT:0>, (word, output, remain)<EOL>return output<EOL><DEDENT>
The UD data 'fused tokens' don't necessarily expand to keys that match
    the form. We need orths that exact match the string. Here we make a best
    effort to divide up the word.