#P5443. Code Breaking

Code Breaking

题目描述

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

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

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

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

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

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

或者

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

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

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

出现两次.

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

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

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

输入格式

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

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

输出格式

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

样例

输入样例

6 2
0
1
2
3
3
4 01234
5 91234

输出样例

19