#U16B02D. Block Game

Block Game

Description

农夫约翰正在尝试通过给他的牛群一组 NN 块拼字板来教它们识字,这些拼字板通常用于学龄前儿童学习拼写,其中 1N1001 \leq N \leq 100。每块拼字板的两面都有一个单词和一张图片。例如,一面可能有单词 "cat" 和一张猫的图片,另一面可能有单词 "dog" 和一张狗的图片。当拼字板平放在地上时,会显示 NN 个单词。通过翻转某些拼字板,可以展示另一组 NN 个单词。

为了帮助牛群进行拼写,农夫约翰计划制作一些木制方块,每个方块上刻有一个字母。他希望为每个字母制作足够多的方块,这样无论哪组 NN 个单词出现在朝上的拼字板上,牛群都能够使用这些方块拼写出所有的单词。例如,如果 N=3N=3,朝上的单词是 "box"、"cat" 和 "car",那么牛群需要至少一个 "b" 方块、一个 "o" 方块、一个 "x" 方块、两个 "c" 方块、两个 "a" 方块、一个 "t" 方块和一个 "r" 方块。

请帮农夫约翰确定他需要为每个字母提供的最小方块数,以便无论拼字板显示哪组单词,牛群都能拼写出所有可见的 NN 个单词。

输入格式(文件 blocks.in):

第 1 行包含整数 NN。 接下来的 NN 行中,每行包含 2 个由空格分隔的单词,表示拼字板两面的单词。每个单词是最多由 10 个小写字母组成的字符串。

输出格式(文件 blocks.out):

请输出 26 行。第 1 行应包含需要的 'a' 方块的数量。接下来的每行应依次输出 'b' 方块、'c' 方块的数量,直到 'z' 方块的数量。

示例输入:

3
fox box
dog cat
car bus

示例输出:

2
2
2
1
0
1
1
0
0
0
0
0
0
0
2
0
0
1
1
1
1
0
0
1
0
0

hint

在此示例中,有 N=3N=3 块拼字板,共有 23=82^3=8 种可能的朝上单词组合:

  • fox dog car
  • fox dog bus
  • fox cat car
  • fox cat bus
  • box dog car
  • box dog bus
  • box cat car
  • box cat bus

我们需要为每个字母准备足够的方块,以便无论哪种组合,牛群都能拼出这三个单词。