#2186. Code Breaking

Code Breaking

题目描述

奶牛骑着农民约翰的拖拉机不断惹麻烦,所以他把拖拉机的钥匙藏在办公室一个新的保险柜里.奶牛们没有被吓倒,发誓要闯入这个保险箱.

保险箱由相当复杂的密码系统保护.密码输入系统被安排为N\red{N(}1<=N<=20000\red{1<=N<=20000)}个节点的根树,每个节点都需要一个介于0\red{0}9\red{9}之间的数字.

节点索引为0..N1.\red{0..N-1.}奶牛拥有的唯一信息是,长度为5\red{5}的某些序列不会沿着树的特定路径向上出现.例如,假设树如下(根在A\red{A}):

A <- B <- C <- D <- E
^
|
F

奶牛可能知道序列01234\red{01234}不是从F\red{F}开始出现的,并且序91234\red{91234}不会从E\red{E}开始发生.该信息排除19\red{19}个可能的密码:表单中的所有密码

4 <- 3 <- 2 <- 1 <- *
               ^
               |
               0

或者

4 <- 3 <- 2 <- 1 <- 9
               ^
               |
               *

一旦我们考虑到这样一个事实

4 <- 3 <- 2 <- 1 <- 9
               ^
               |
               0

出现两次.

给定M\red{M(}1<=M<=50000\red{1<=M<=50000)}长度为5\red{5}的序列及其起始序列树中的节点,

帮助奶牛计算出有多少个密码排除在外.

你应该以1234567\red{1234567}的膜计算你的答案.

输入格式

1\red{1}行:两个空格分隔的整数,N\red{N}M.\red{M.}

2...N\red{2...N}行: 第i+1\red{i+1}行包含一个整数p\red{p(}i\red{i)},表示树中节点i\red{i}的父节点0<=p\red{(0<=p(}i\red{i)}

输出格式

1\red{1}行:一个整数,表示排除的配置,膜1234567.\red{1234567.}

样例

输入样例

6 2
0
1
2
3
3
4 01234
5 91234

输出样例

19