拉丁美洲新手区域赛即将到来,比特兰大学希望组建一支由新入学学生组成的队伍参赛。学校有 $N$ 名教师可以指导学生算法。每位候选学生必须由单名教师培训,培训内容为该教师所掌握算法的一个非空子集。例如,如果某位教师掌握 PRIM 和 KRUSKAL 两种算法,那么该教师可以仅培训学生 PRIM、仅培训 KRUSKAL,或者同时培训 PRIM 和 KRUSKAL。如你所见,在这种情况下,该教师培训学生有三种不同的选择。一般而言,掌握 $A$ 种不同算法的教师有 $2^A - 1$ 种不同的培训方式。所有这 $2^A - 1$ 种选择都可以实施,因为学校有大量新生,且对每位教师可培训的学生数量没有限制。
学校希望组建一支人数尽可能多的队伍。然而,最终队伍中的每对学生都必须能够相互合作,这意味着他们中的每一个人都必须学习过对方没有学习过的某种算法(即对于队伍中的任意两名学生,第一名学生学习了第二名学生没学过的算法,且第二名学生也学习了第一名学生没学过的算法)。例如,接受过 BFS 和 DFS 培训的学生可以与接受过 DFS 和 DIJKSTRA 培训的学生合作,因为第一名学生学习了 BFS 而第二名学生没有,第二名学生学习了 DIJKSTRA 而第一名学生没有。另一方面,接受过 BFS 和 DFS 培训的学生不能与仅接受过 BFS 培训、或仅接受过 DFS 培训、或同时接受过 BFS 和 DFS 培训的学生合作。
给定每位教师所掌握的算法集合,你必须确定队伍中最多可以有多少名学生,使得队伍中的每位学生都能相互合作。请记住,每位学生必须由单名教师培训,而每位教师可以根据需要培训任意数量的学生。例如,如果只有一位教师掌握 DFS、BFS 和 DIJKSTRA 算法,则最多可以组建一支包含三名学生的队伍:第一名学生接受 DFS 和 BFS 培训,第二名学生接受 DFS 和 DIJKSTRA 培训,第三名学生接受 BFS 和 DIJKSTRA 培训。
输入格式
第一行包含一个整数 $N$($1 \le N \le 100$),表示教师的数量。
接下来的 $N$ 行中,每行描述一位教师:首先是一个整数 $A$($1 \le A \le 10$),表示该教师掌握的算法数量,随后是 $A$ 个互不相同的非空字符串,每个字符串最多包含 10 个大写字母,表示该教师掌握的算法名称。
输出格式
输出单行,包含一个整数,表示队伍中每位学生都能相互合作的情况下,队伍的最大学生人数。
样例
输入样例 1
1 3 DFS BFS DIJKSTRA
输出样例 1
3
输入样例 2
2 4 BFS DFS LCA RMQ 2 PRIM KRUSKAL
输出样例 2
8
输入样例 3
4 3 BFS DFS DIJKSTRA 4 BFS DFS LCA RMQ 3 DIJKSTRA BFS DFS 3 FLOYD DFS BFS
输出样例 3
10
输入样例 4
1 1 HAVEFUN
输出样例 4
1
输入样例 5
3 4 FFEK DANTZIG DEMOUCRON FFT 4 PRIM KRUSKAL LCA FLOYD 4 DFS BFS DIJKSTRA RMQ
输出样例 5
18