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 C++ (judge verdict: Accepted)

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <numeric>
#include <complex>
#define ll long long
using namespace std;

bool binary_searcha(ll key, ll n, ll box[]) {
	ll right, left, mid;
	right = 0;
	left = n;
	while (right < left) {
		mid = (right + left) / 2;
		if (box[mid] == key) {
			return true;
		}
		else if (box[mid] > key) {
			left = mid;
		}
		else {
			right = mid + 1;
		}
	}
	return false;
}

int main() {
	ll n, s[200000], q, t[100000], c = 0;
	cin >> n;
	for (int i = 0; i < n; i++)cin >> s[i];
	cin >> q;
	for (int i = 0; i < q; i++)cin >> t[i];
	
	for (int i = 0; i < q; i++) {
		if (binary_searcha(t[i], n, s) == true)c++;
	}
	cout << c << endl;
	return 0;
}