“Four Russians” 方法是一种降低各种组合问题复杂度的通用方法,其过程如下:将问题实例划分为若干小块,预计算所有可能的小块的结果,然后通过一步处理每个小块来解决原始问题。“Four Russians” 实际上是指俄罗斯科学家 Arlazarov、Diniz、Kronrod 和 Faradjev。
Fred 正在解决一个树上的问题,他决定使用 “Four Russians” 方法。树上的 “Four Russians” 方法涉及将树拆分为固定大小的小树。这种拆分通常很容易,但不幸的是,Fred 没有完全理解该方法,因此准备工作对他来说太难了。他请求你的帮助。
考虑一棵有 $n$ 个顶点的有根树 $T$。本题中的所有树都是无标号的,且子节点是无序的。Fred 选择了一个整数 $k$,并将恰好有 $k$ 个顶点的有根树称为“微树”(microtree)。他现在想通过以下方式将 $T$ 拆分为微树:
- 移除 $T$ 的一些叶子节点以得到树 $T'$。
- 移除 $T'$ 的一些边以得到微树 $T_1, T_2, \dots, T_v$(每个微树 $T_i$ 必须恰好有 $k$ 个顶点)。
他希望选择一种将 $T$ 拆分为微树的方式,使得微树的类型数量最少。如果两棵微树作为有根树是同构的,则它们属于同一种类型。例如,有 3 个顶点的微树有 2 种类型,有 4 个顶点的微树有 4 种类型,如下图所示。
帮助 Fred。对于给定的树 $T$ 和整数 $k$,求出最小的 $s$,使得 $T$ 可以按照上述方式拆分为属于 $s$ 种类型之一的 $k$ 大小的微树。
输入格式
输入文件包含多个测试用例。每个测试用例的第一行包含 $n$ 和 $k$ ($2 \le n \le 100, 2 \le k \le 5$)。第二行包含 $n-1$ 个整数,描述树 $T$。$T$ 的根是顶点 1。对于每个从 2 到 $n$ 的顶点 $i$,给出了它的父节点 $p_i$,满足 $p_i < i$。
最后一个测试用例后跟一行包含两个零的行,该行不应被处理。所有测试用例的 $n$ 之和不超过 300。
输出格式
对于每个测试用例,输出 $s$ —— 使得 $T$ 可以拆分为 $s$ 种类型的微树的最小数量。如果无法以这种方式拆分树,则输出 $-1$。
样例
输入 1
7 3 1 1 2 2 4 4 8 3 1 1 2 2 3 4 5 11 3 1 1 2 2 3 3 4 5 6 7 0 0
输出 1
1 2 -1