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.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner inp = new Scanner(System.in);

        int total1 = inp.nextInt();

        int[] list1 = new int[total1];

        for(int i = 0; i < total1; i++){
            list1[i] = inp.nextInt();
        }

        Arrays.sort(list1);

        int total2 = inp.nextInt();

        int[] list2 = new int[total2];

        for(int i = 0; i < total2; i++) {
            list2[i] = inp.nextInt();
        }

        Arrays.sort(list2);

        ArrayList<Integer> sameList = new ArrayList<>();

        for (int i : list1) {
            int tempNum;

            String tempString = binarySearch(list2, list2.length, i);

            if (tempString != null) {
                tempNum = Integer.parseInt(tempString);

                if (!(sameList.contains(tempNum))) {
                    sameList.add(tempNum);
                }
            }
        }

        System.out.println(sameList.size());
    }

    public static String binarySearch(int[] list, int n, int t) {
        int l = 0;
        int r = n-1;

        while (l <= r) {
            int mid = (int) Math.floor((l + r) / 2);

            if (list[mid] < t) {
                l = mid + 1;
            } else if (list[mid] > t) {
                r = mid - 1;
            } else if (list[mid] == t) {
                return list[mid] + "";
            }
        }

        return null;
    }
}