方块游戏

题目描述:

农夫约翰试图通过给奶牛一套通常用于学龄前儿童的 N 个拼写板来教他的奶牛阅读。

每个拼写板的每一侧都有一个单词和一个图画。

例如,一侧可能有单词 cat 和一只小猫,另一侧可能有单词 dog 和一只小狗。

因此,当所有拼写板放置到地面上时,会显示一组 N 个单词。

通过翻转其中一部分板子,就可以得到另一组 N 个单词。

为了帮助奶牛练习单词拼写,约翰想要制作一些木块,在每个木块上都印上一个字母,使得奶牛可以使用这些木块拼出看到的单词。

为了使得无论哪一组 N 个单词朝上显示,奶牛都能将其全部拼出,就需要印有各种字母的木块都足够的多。

例如,如果 N=3 且单词 box, cat, car 朝上显示,则奶牛至少需要一个 b 块,一个 o 块,一个 x 块,两个 c 块,两个 a 块,一个 t 块和一个 r 块。

请帮助约翰确定,印有每种字母的木块至少需要提供多少块,才能使得不管每个板子的哪一侧朝上显示,奶牛都可以拼出所有 N 个可见的单词。

输入格式:

第一行包含整数 N。

接下来 N 行,每行包含两个单词,这两个单词分别位于一块木板的两侧,每个单词都是长度不超过 10 的小写字母构成的字符串。

输出格式:

共 26 行。

第一行输出印有字母 a 的木块所需的块数。

第二行输出印有字母 b 的木块所需的块数,以此类推。

数据范围:

1 ≤ N ≤ 100

样例输入:

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

提示:

样例解释
在此样例中,共有 N=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
时间限制: 1000ms
空间限制: 256MB

来源: USACO 2016 December Contest Bronze