一个著名的逻辑问题是在纸上用 4 条线段连接 9 个点,且过程中不能抬起笔。虽然这并不难(尽管需要跳出框框思考),但 Simone 最近围绕这个概念的推广构建了一个名为“连接点”(Connect the Dots)的游戏。
在“连接点”游戏中,你面对的是一个 $4 \times 4$ 的规则点阵。每个点都被赋予了一个 1 到 16 之间的唯一编号。任务是按照编号顺序连接这些点,从点 1 开始,到点 16 结束。连接这些点时应使用尽可能少的线段,从点 1 开始,每一条线段的终点即为下一条线段的起点。线段允许相交和重叠。此外,在连接当前目标点的过程中,允许穿过其他点。这意味着,例如,按照 1, 4, 2, 3, 2, 4, ... 的顺序访问前四个点是可以接受的。形式上,序列 $1, 2, \dots, 15, 16$ 必须是所访问点序列的一个子序列。
图 C.1:第一个样例的解法。
Simone 请你尝试这个谜题,并和你打赌说这太难了。通过编写一个程序来解决这个谜题,证明她是错的!
输入格式
输入包含: * 4 行,每行包含 4 个整数,表示网格中点的编号。第 $i$ 行的第 $j$ 个数字是网格中第 $i$ 行第 $j$ 列点的编号。
输入中的 16 个数字都在 1 到 16 之间(含),且两两不同。
输出格式
输出按顺序连接所有点所需的最少线段数。
样例
输入 1
1 2 3 4 10 11 12 5 9 16 6 13 8 7 15 14
输出 1
6
输入 2
1 2 3 4 8 9 10 11 7 15 16 12 6 14 13 5
输出 2
7