组合子逻辑是 Moses Schönfinkel 和 Haskell Curry 发明的一种符号系统,用于消除数理逻辑中对于变量的需要。本题考察一种与真实世界的组合子演算略有差别的组合子系统。
一个组合子项是下列形式之一:
$P$
$(E_1$ $E_2)$
其中 $P$ 表示一个基本函数,$E_1$ 以及 $E_2$ 表示一个组合子项(可以相同)。不满足以上形式表达式均非组合子项。
我们将一个组合子项$E$的参数个数 $np(E)$ 如下:
$np(P)=$ 基本函数 $P$ 的参数个数;
$np((E_1E_2))=np(E_1)−1$。
本题中,我们用一个正整数同时表示一个基本函数,以及该基本函数的参数个数。
对于一个组合子项 $E$,如果它和它包含的所有组合子项的参数个数 $np$ 均为正整数,那么我们称这个 $E$ 为范式。
我们经常组合子项简化表示:如果一个组合子项 $E$ 含有连续子序列 $(…((E_1E_2)E_3)…E_n)$(其中 $n≥3$),其中 $E_k$ 表示组合子项(可以是简化表示的),那么将该部分替换为 $(E_1E_2E_3…E_n)$,其他部分不变,得到表达式 $E$ 的一个简化表示。一个组合子项可以被简化表示多次。
给定一个基本函数序列,问至少需要添加多少对括号,才能使得该表达式成为一个范式的简化表示(即满足范式的性质);如果无论如何怎样添加括号,均不能得到范式的简化表示,输出 $−1$。