Type Printer
Necesitas imprimir N palabras en una imprenta de tipos móviles. Las imprentas de tipos móviles son aquellas viejas imprentas que requieren de acomodar pequeñas piezas de metal (cada una contiene una letra) con el fin de formar palabras, después una hoja de papel es prensada contra ellas para así imprimir la palabra. La imprenta que tienes te permite hacer cualquiera de las siguientes operaciones:
- Agregar una letra al final de la palabra que esta actualmente en la imprenta.
- Quitar la letra del final de la parabra que esta actualmente en la imprenta. Esta operación se permite sólo si hay al menos una letra en la imprenta.
- Imprimir la palabra que está actualmente en la imprenta.
Inicialmente, la imprenta está vacía; es decir no contiene ninguna pieza metálica. Al terminar de imprimir las palabras, te está permitido dejar algunas letras en la imprenta. También, puedes imprimir las palabras en el orden que quieras.
Como cada operación require de mucho tiempo, quieres minimizar el número de operaciones.
PROBLEMA
Escribe un programa, que dadas las palabras que quieres imprimir, encuentre el número mínimo de operaciones necesarias para imprimir todas las palabras en cualquier orden, así como la secuencia de operaciones.
CONSIDERACIONES
El número de palabras que tienes escribir.
ENTRADA
Tu programa deberá leer de la entrada estandar los siguientes datos:
La línea 1 contiene el entero , el número de palabras que tienes que imprimir.
Las siguientes líneas contienen una palabra cada una. Cada palabra está formada por letras minúsculas \((‘a’ – ‘z‘)\) solamente y tiene una longitud entre y .
NOTA
Todas las palabras son distintas.
SALIDA
Tu programa deberá escribir a la salida estandar los siguientes datos:
La línea 1 deberá contener el entero que representa el número mínimo de operaciones para imprimir las palabras.
Las siguentes lineas deben contener un caracter cada una. Estos caracteres describen la secuencia de operaciones realizada. Cada operación se describe de la siguiente manera:
Agregar una letra se representa con la misma letra en minuscula.
Quitar una letra se representa por el caracter \(‘-‘\) (signo de , código ).
- Imprimir la palabra actual se representa por el caracter \(‘P’\) (letra mayúscula).
EJEMPLO DE ENTRADA
3
print
the
poem
EJEMPLO DE SALIDA
20
t
h
e
P
-
-
-
p
o
e
m
P
-
-
-
r
i
n
t
P
Comments
easy