帕维尔会做烧烤。有 n 串,它们排成一排地放在火盆上,每个串在 n 个位置中的一个。帕维尔希望每个烤串在两个方向的n个位置中的每一个位置煮一段时间:在最初指向的方向和相反的方向。 帕维尔有一个计划:一个排列p和一个序列b1,b2,...,bn,由零和一组成。每秒钟帕维尔在位置 i 上移动撇子到位置p我,如果b我等于 1 然后他将其反转。所以他希望每个烤串都能在两个方向上访问每个位置。
不幸的是,并非每对排列 p 和序列 b 都适合 Pavel。给定排列 p 和给定序列 b 中元素的最小总数是多少,他需要更改以便每个串烧将访问 2n 个位置中的每一个?请注意,更改排列后也应保持排列。
对于帕维尔来说没有问题,如果一些烤串在他结束做饭之前多次访问一些位置。换句话说,如果有一个整数 k (k≥2 n),则排列 p 和序列 b 适合他,因此在 k 秒后,每个串烧都会访问 2n 个位置中的每一个。
可以证明,对于任何n,都存在一些合适的排列p和序列b对。
输入格式
输入
第一行包含整数 n (1≤n≤2·105)− 串数。
第二行包含整数序列p1,p2,...,pn (1≤p我≤n)− 排列,根据该排列,帕维尔想要移动烤串。
第三行包含一个序列b1,b2,...,bn由零和一组成,根据它,帕维尔想反转串。
输出格式
输出
打印单个整数− 给定排列 p 和给定序列 b 中元素的最小总数,他需要更改,以便每个串烧将访问 2n 个位置中的每一个。