Na definição da função gerador_palavras, o correto é utilizar o próprio parâmetro palavra em vez de uma variável externa à função, como foi o caso da linha 4 onde se utilizou a variável lista. A correção seria: fatias.append((palavra[:i],palavra[i:]))
def gerador_palavras(palavra)
fatias = []
for i range(len(palavra)+1):
fatias.append((lista[:i],lista[i:]))
palavras_geradas = insere_letras(fatias)
return palavras_geradas