有若干个彩色立方体。它们的大小相同,但颜色可能不同。这些立方体的每个面都有单一的颜色。立方体不同面上的颜色可能相同,也可能不同。
如果通过对其中一个立方体进行适当的旋转,可以使两个立方体看起来完全相同,则称这两个立方体为“颜色相同”。例如,图 2 中所示的两个立方体颜色相同。如果一组立方体中的每一对立方体都颜色相同,则称这组立方体为“颜色相同”。
一个立方体与其镜像并不一定颜色相同。例如,图 3 中所示的两个立方体颜色不相同。
无论立方体面上的颜色如何,你都可以通过重新粉刷某些面来使给定的一组立方体颜色相同。在图 4 中,重新粉刷四个面可以使这三个立方体颜色相同,而粉刷更少的面则无法达到目的。
你的任务是编写一个程序,计算为了使给定的一组立方体颜色相同,最少需要重新粉刷多少个面。
输入格式
输入由一系列数据集组成。每个数据集由一个头部和紧随其后的主体组成。头部是一行,包含一个正整数 $n$,主体由随后的 $n$ 行组成。你可以假设 $1 \le n \le 4$。主体中的每一行包含六个用空格分隔的颜色名称。颜色名称由一个或多个用连字符(-)连接的单词组成。单词由一个或多个小写字母组成。你可以假设颜色名称(包括连字符)最多为 24 个字符。
一个数据集对应一组彩色立方体。整数 $n$ 对应立方体的数量。主体的每一行对应一个立方体,并描述其各个面的颜色。行中的颜色名称按照图 5 所示的面编号顺序排列。一行
$color_1 \ color_2 \ color_3 \ color_4 \ color_5 \ color_6$
对应于图 6 所示的立方体颜色。
输入的结束由一行包含单个零的行表示。它既不是数据集的一部分,也不属于任何数据集。
图 2:颜色相同的立方体
图 3:颜色不相同的立方体
图 4:重新粉刷的示例
图 5:面编号
图 6:着色
输出格式
对于每个数据集,输出一行,包含为了使这组立方体颜色相同而需要重新粉刷的最少面数。
样例
样例输入 1
3 scarlet green blue yellow magenta cyan blue pink green magenta cyan lemon purple red blue yellow cyan green 2 red green blue yellow magenta cyan cyan green blue yellow magenta red 2 red green gray gray magenta cyan cyan green gray gray magenta red 2 red green blue yellow magenta cyan magenta red blue yellow cyan green 3 red green blue yellow magenta cyan cyan green blue yellow magenta red magenta red blue yellow cyan green 3 blue green green green green blue green blue blue green green green green green green green green sea-green 3 red yellow red yellow red yellow red red yellow yellow red yellow red red red red red red 4 violet violet salmon salmon salmon salmon violet salmon salmon salmon salmon violet violet violet salmon salmon violet violet violet violet violet violet salmon salmon 1 red green blue yellow magenta cyan 4 magenta pink red scarlet vermilion wine-red aquamarine blue cyan indigo sky-blue turquoise-blue blond cream chrome-yellow lemon olive yellow chrome-green emerald-green green olive vilidian sky-blue 0
样例输出 1
4 2 0 0 2 3 4 4 0 16