Palavras conectadas

Para cada par adjacente de palavras, encontre o final mais longo da primeira palavra que corresponda ao início da próxima. Una as palavras escrevendo essa sobreposição uma única vez. Retorne a string unida e o menor comprimento de sobreposição encontrado entre qualquer par.

Exemplos

join(["oven", "envier", "erase", "serious"]) ➞ ["ovenvieraserious", 2]

join(["move", "over", "very"]) ➞ ["movery", 3]

join(["to", "ops", "psy", "syllable"]) ➞ ["topsyllable", 1]

# "to" and "ops" share "o" (1)
# "ops" and "psy" share "ps" (2)
# "psy" and "syllable" share "sy" (2)
# the minimum overlap is 1

join(["aaa", "bbb", "ccc", "ddd"]) ➞ ["aaabbbcccddd", 0]

Notas

Mais especificamente, observe a sobreposição entre as letras finais das palavras anteriores e as letras iniciais da próxima palavra.