似花还似非花
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定两个长度为 n 的排列 A,B ,以及一个正整数 q

你可以对排列 B 进行以下操作:

选择一个元素 x,然后将该元素 x 挪动到排列的任意一个位置(可以是开头或者末尾)。

例如:,我可以选定元素 3 ,然后将 3 挪到开头,使得排列变成 ,该行为算作一次操作。

接下来会进行 q 次询问,每次询问为:

给定一个正整数 x (保证 x 不超过 n ),请问,在元素 x 不可被选取的情况下,将排列 B 变成排列 A 需要的最小操作次数是多少?



注:①排列:一个长度为 n 的数列,当且仅当对于所有的 1~n ,在数列中出现且仅出现一次。

②:子序列:在原来的数列中,随意删去若干个位置上(可能一个都不删)的元素,所剩下的数列。

输入描述:

第一行,一个正整数 

第二行,n 个正整数,表示排列 A_1,A_2...A_n ,并且 1~n 的每个数都会出现且仅出现一次。

第三行,n 个正整数,表示排列 B_1,B_2...B_n ,并且 1~n 的每个数都会出现且仅出现一次。

第四行,一个正整数 ,代表询问的个数。

接下来 q 行,每行一个整数 ,代表不可被选中的元素。

输出描述:

输出 q 行,每行一个整数,第i行的整数代表第i个询问对应的答案。
示例1

输入

复制
3
1 2 3
1 2 3
2
1
3

输出

复制
0
0
示例2

输入

复制
3
1 2 3
3 2 1
2
1
2

输出

复制
2
2
示例3

输入

复制
5
1 2 3 4 5
2 3 4 1 5
3
1
2
5

输出

复制
3
1
1