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: Wrong Answer)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace Aoj.ALDS.Chapter4B
{
    class Program
    {
        /// <summary>
        /// ????????¢?´¢?????? list??????value??????????????¢??????
        /// ????????????????????´??????-1????????????
        /// </summary>
        public static int BinarySearch<T>(List<T> list, T value) where T : IComparable<T>
        {
            int left = 0;
            int right = list.Count - 1;

            while (left < right)
            {
                int mid = (left + right) / 2;
                int compare = value.CompareTo(list[mid]);
                if (compare == 0)
                    return mid;
                else if (compare < 0)
                    right = mid;
                else
                    left = mid + 1;
            }

            return -1;
        }

        public static void Solve()
        {
            Console.ReadLine();
            var list1 = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse).ToList();
            int q = int.Parse(Console.ReadLine());
            var list2 = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse).ToList();

            int counter = 0;
            for (int i = 0; i < q; i++)
            {
                if (BinarySearch(list1, list2[i]) >= 0)
                    counter++;
            }

            Console.WriteLine(counter);
        }

        public static void Main()
        {
            // Console.SetIn(new System.IO.StreamReader("Aoj/AlgorithmsAndDataStructures/Input/04_Search_B_03.txt"));
            // var sw = new Stopwatch();
            // sw.Start();

            Solve();

            // Console.WriteLine("{0}ms", sw.ElapsedMilliseconds);
        }
    }
}