Impressora de tipos móveis

Tem uma impressora de tipos móveis, um dispositivo de impressão antigo que requer a disposição de pequenas peças de metal com letras para formar palavras. Esta impressora permite três operações:
  1. adicionar uma letra ao final da palavra atual
  1. remover a última letra, se existir
  1. imprimir a palavra atual
O seu objetivo é escrever um programa que recebe como entrada n palavras e determina o número mínimo de operações necessário para imprimir todas as palavras em qualquer ordem. Além disso, o programa deve produzir uma sequência de operações que alcance esse mínimo.

Entrada

A primeira linha da entrada contém um único inteiro n (1 ≤ n ≤ 25,000), representando o número de palavras a imprimir.
Em seguida, surgem n linhas, cada uma contendo uma palavra formada por letras minúsculas ('a' - 'z') e com comprimento entre 1 e 20 (inclusive). Todas as palavras serão distintas.

Saída

O programa deve imprimir um inteiro m, que representa o número mínimo de operações necessárias para imprimir as palavras.
Nas m linhas seguintes, cada uma deve conter um único carácter que descreva a sequência de operações. As operações devem ser representadas da seguinte forma:
  • Adicionar uma letra é representado pela própria letra minúscula.
  • Remover a última letra é representado pelo carácter - (hífen, código ASCII 45).
  • Imprimir a palavra atual é representado pelo carácter P (letra maiúscula P).

Exemplos

Entrada
Saída
3 print the poem
20 t h e P - - - p o e m P - - - r i n t P
 
 

Constraints

Time limit: 4 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue