Module: 波尔


Problem

3 /10


类型打印机

Problem

你需要在移动式打印机上打印 N 个字。活字打印机——它们是旧打印机,需要按一定顺序放置小块金属(每块包含一个字母)以形成单词。然后他们都被压在一张纸上。这打印了一个词。您的打印机允许您执行以下操作:
  • 在打印机上当前单词的末尾添加一个字母。
  • 从当前打印机上的单词中删除最后一个字母。只有当单词至少包含一个字母时,才能进行此操作。
  • 打印当前在打印机上的单词。
最初,打印机包含一个空字。可以在打印机打印结束时留一个非空字。您可以按任何顺序输入给定的单词。
 
三个操作中的每一个都需要一个单位的时间。您需要找到一系列操作,以在最短时间内打印出给定的 N 个单词。如果有多个最小序列,打印其中一个。
 
输入
你的程序应该接受以下输入:
 
第一行是数字N(1<=N<=25000)
在接下来的 N 行中,由小写的拉丁字母组成的单词。每个单词的长度不超过20个。所有单词都不同。
 
输出
您的程序应输出以下内容:
 
在第一行 M —操作次数。
在接下来的 M 行,一个 —操作说明。每个操作都由一个字符描述:
添加字符由字符本身指示。
删除一个字符用字符“-”表示(减号,ASCII 代码 45)。
“打印当前字”操作由符号“P”表示(大写拉丁字母 P)。
  <正文>
输入 输出
3
打印
20
t
h
e
P
-
-
-
p
o
e
P
-
-
-
r
n
t
P