蘑菇王国(Mushroom Kingdom)的所有 $N$ 家本地面包店都卖完了面包,因此奇诺比奥队长(Captain Toad)踏上了购买尽可能多面包的旅程。所有面包店相互连接形成一个连通图,因此他决定应用他最喜欢的算法来寻找面包:面包优先搜索(Bread First Search)。该算法在很大程度上类似于广度优先搜索(Breadth First Search)。
奇诺比奥队长拿起他可靠的铅笔,决定在购物清单上记下他想访问的面包店,从最近的面包店 1 开始。他重复访问清单开头的面包店(并在访问时将该面包店从清单开头移除)。当访问一家面包店时,他以某种任意的顺序考虑所有相邻的面包店,并将它们添加到清单的末尾(如果相邻的面包店已经在清单中,奇诺比奥队长仍然会再次将其添加到清单中),但有一个小小的例外:如果要添加的面包店有面包,他会将其添加到清单的开头,因为他想更早地访问它。他重复这个过程,访问清单开头的面包店,直到他彻底访问了每一家面包店。如果他已经访问过清单顶部的面包店,他会跳过它,因为多次访问同一家面包店没有意义。给定面包店的图以及奇诺比奥队长访问每家面包店的顺序,确定可能拥有面包的最少面包店数量。
例如,在样例输入中,面包店 4 必须包含面包,才能使面包店按该顺序被访问。请注意,虽然所有 4 家面包店都可以拥有面包以满足上述顺序,但 1 是最少数量。
图 1:样例 1 示意图
输入格式
输入的第一行包含两个空格分隔的整数 $N$($1 \le N \le 2\,000$)和 $M$($N - 1 \le M \le \min(\frac{N(N-1)}{2}, 5\,000)$),分别表示面包店的数量和连接面包店的边数。
接下来的 $M$ 行,每行包含两个空格分隔的整数 $v_1, v_2$($1 \le v_1, v_2 \le N$ 且 $v_1 \neq v_2$),表示面包店 $v_1$ 和 $v_2$ 之间的一条无向边。图中不存在自环或重边。
最后一行输入包含 $N$ 个空格分隔的整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le N$),表示面包店被访问的顺序。保证所有的 $a_i$ 都是互不相同的整数,且对于某种面包的分配方案,给定的顺序是上述条件下对面包店的一次可行遍历。同时保证 $a_1 = 1$。
输出格式
输出一行,包含一个整数,表示在给定上述顺序的情况下,可能拥有面包的最少面包店数量。
样例
样例输入 1
4 3 1 2 1 3 3 4 1 3 4 2
样例输出 1
1