# input the number for array of a[]

n = int(eval(input()))

a = list(map(int, input().split()))



# input the number for array of b[]

m = int(eval(input()))

b = list(map(int, input().split()))



# do the linear search

count = 0

for i in range(m):

    for j in range(n):

        if(b[i] == a[j]):

            count += 1

            break



print(count)



n = int(eval(input()))

S = list(map(int, input().split()))

q = int(eval(input()))

T = list(map(int, input().split()))

# T < S



cnt = 0

for i in T:

    for j in S:

        if i == j:

            cnt += 1

            break



print(cnt)

# LinearSearch: 線形探索

# 線形探索は、配列の先頭から各要素が目的の値と等しいかどうかを順番に調べる。

# 等しいものが見つかった時点でその位置を返し探索を終了する。



# input the number for array of a[]
n = int(eval(input()))
a = list(map(int, input().split()))
# input the number for array of b[]
m = int(eval(input()))
b = list(map(int, input().split()))
# do the linear search
count = 0
for i in range(m):
    for j in range(n):
        if b[i] == a[j]:
            count += 1
            break
print(count)

n = int(eval(input()))
S = list(map(int, input().split()))
q = int(eval(input()))
T = list(map(int, input().split()))
# T < S
cnt = 0
for i in T:
    for j in S:
        if i == j:
            cnt += 1
            break
print(cnt)
# LinearSearch: 線形探索
# 線形探索は、配列の先頭から各要素が目的の値と等しいかどうかを順番に調べる。
# 等しいものが見つかった時点でその位置を返し探索を終了する。

-# input the number for array of a[] -a = list(map(int, input().split())) -# input the number for array of b[] -m = int(eval(input())) -b = list(map(int, input().split())) -# do the linear search -count = 0 -for i in range(m): -    for j in range(n): -        if b[i] == a[j]: -            count += 1 +S = list(map(int, input().split())) +q = int(eval(input())) +T = list(map(int, input().split())) +# T < S +cnt = 0 +for i in T: +    for j in S: +        if i == j: +            cnt += 1 -print(count) +print(cnt) +# LinearSearch: 線形探索 +# 線形探索は、配列の先頭から各要素が目的の値と等しいかどうかを順番に調べる。 +# 等しいものが見つかった時点でその位置を返し探索を終了する。