Problem:
Search II

You are given a sequence of n integers S and a sequence of different q integers T. Write a program which outputs C, the number of integers in T which are also in the set S.

Input

In the first line n is given. In the second line, n integers are given. In the third line q is given. Then, in the fourth line, q integers are given.

Output

Print C in a line.

Constraints

Elements in S is sorted in ascending order

n ≤ 100000

q ≤ 50000

0 ≤ an element in S ≤ 109

0 ≤ an element in T ≤ 109

Sample Input 1

5
1 2 3 4 5
3
3 4 1

Sample Output 1

3

Sample Input 2

3
1 2 3
1
5

Sample Output 2

0

Sample Input 3

5
1 1 2 2 3
2
1 2

Sample Output 3

2

Notes

Solution in JAVA (judge verdict: Accepted)

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int n, q;
        int i, l, r, p, conut;
        int[] A, m;

        n = sc.nextInt();
        A = new int[n];
        for (i = 0; i < n; i++) {
            A[i] = sc.nextInt();
        }

        q = sc.nextInt();
        m = new int[q];
        for (i = 0; i < q; i++) {
            m[i] = sc.nextInt();
        }

        conut = 0;

        for(i=0;i<q;++i){

            r = n/2;
            l = 0;
            p = n;

            while(true){
                
                if(m[i] == A[r]){
                    conut++;
                    break;
                }else if(l == p || p-l == 1){
                    break;
                }else if(m[i] > A[r]){
                    l = r;
                    r = p - (p-l)/2;
                }else{
                    p = r;
                    r = p - (p-l)/2;
                }

            }

        }
        System.out.println(conut);
    }
}