2025年12月25日。作为圣诞节的传统,你聚集了一群朋友来解决一个谜题。在你的朋友中,既有“文字脑”(wordcels),也有“空间旋转脑”(shape rotators),他们分别更擅长用文字思考和用空间想象。这个谜题甚至挑战了最聪明的文字脑和最出色的空间旋转脑:
存在一个三维网格,其所有整数坐标 $(x, y, z)$ 满足 $1 \le x, y, z \le n$,每个点都有一个与之关联的标签,该标签为 'B'、'A'、'P' 或 'C' 之一。在这个网格中,你需要找到弯曲单词(curly word)“BAPC”的出现次数。一个弯曲单词“BAPC”是网格中四个点的集合,满足以下条件:
- 标签按顺序拼写出“BAPC”(即依次为 B、A、P、C)。
- 三元组“BAP”形成的夹角为 90 度:即从 $B \to A$ 的向量与从 $A \to P$ 的向量形成 90 度角。
- 三元组“APC”形成的夹角为 90 度:即从 $A \to P$ 的向量与从 $P \to C$ 的向量形成 90 度角。
请注意,这两个角不需要与坐标轴对齐。例如,请参见图 L.1 中第三个样例输入的视觉呈现。
在给定的网格中,有多少个弯曲单词“BAPC”?
输入格式
输入包含:
- 第一行包含一个整数 $n$ ($1 \le n \le 22$),表示网格的大小。
接下来有 $n$ 个块,每个块包含 $n + 1$ 行。每个 $n + 1$ 行的块包含:
- 一行包含一个连字符(
-),以使输入更易于人类阅读。 - $n$ 行,每行包含 $n$ 个字符,每个字符为 'B'、'A'、'P' 或 'C' 之一,代表三维网格中一个水平层的所有标签。
- 一行包含一个连字符(
输出格式
输出该三维网格中弯曲单词“BAPC”的数量。
样例
输入格式 1
1 - B
输出格式 1
0
输入格式 2
2 - PA PB - CC PB
输出格式 2
2
输入格式 3
3 - BBB BCB BCB - BBC CBA BBB - BBB BPB BBB
输出格式 3
2
说明
图 L.1:第三个样例输入的视觉呈现。在这个网格中,使用高亮字母可以组成两个弯曲单词“BAPC”。