George decided to prepare a Codesecrof round, so he has prepared *m* problems for the round. Let's number the problems with integers 1 through *m*. George estimates the *i*-th problem's complexity by integer *b*<sub class="lower-index">*i*</sub>.

To make the round good, he needs to put at least *n* problems there. Besides, he needs to have at least one problem with complexity exactly *a*<sub class="lower-index">1</sub>, at least one with complexity exactly *a*<sub class="lower-index">2</sub>, ..., and at least one with complexity exactly *a*<sub class="lower-index">*n*</sub>. Of course, the round can also have problems with other complexities.

George has a poor imagination. It's easier for him to make some already prepared problem simpler than to come up with a new one and prepare it. George is magnificent at simplifying problems. He can simplify any already prepared problem with complexity *c* to any positive integer complexity *d* (*c* ≥ *d*), by changing limits on the input data.

However, nothing is so simple. George understood that even if he simplifies some problems, he can run out of problems for a good round. That's why he decided to find out the minimum number of problems he needs to come up with in addition to the *m* he's prepared in order to make a good round. Note that George can come up with a new problem of any complexity.
The first line contains two integers *n* and *m* (1 ≤ *n*, *m* ≤ 3000) — the minimal number of problems in a good round and the number of problems George's prepared. The second line contains space-separated integers *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ..., *a*<sub class="lower-index">*n*</sub> (1 ≤ *a*<sub class="lower-index">1</sub> &lt; *a*<sub class="lower-index">2</sub> &lt; ... &lt; *a*<sub class="lower-index">*n*</sub> ≤ 10<sup class="upper-index">6</sup>) — the requirements for the complexity of the problems in a good round. The third line contains space-separated integers *b*<sub class="lower-index">1</sub>, *b*<sub class="lower-index">2</sub>, ..., *b*<sub class="lower-index">*m*</sub> (1 ≤ *b*<sub class="lower-index">1</sub> ≤ *b*<sub class="lower-index">2</sub>... ≤ *b*<sub class="lower-index">*m*</sub> ≤ 10<sup class="upper-index">6</sup>) — the complexities of the problems prepared by George.
#####################
#1: Array, 
#R -> ++Count[]
#L -> --Count[]
# line1 = input().split(" ")
# arr = list(map(int,input().split()))
# n = int(line1[0])
# k = int(line1[1])
# counts = {}
# l = 0
# r = 0
# count = 0
# for i in range(len(arr)):
#     if arr[i] in counts:
#         counts[arr[i]] += 1
#     else:
#         count += 1
#         counts[arr[i]] = 1
#         if count >= k:
#             r = i
#             break
# for i in range(len(arr)):
#     l = i
#     counts[arr[i]] -= 1
#     if counts[arr[i]] == 0:
#         l = i
#         break
# if count < k:
#     print("-1 -1")
# else:
#     print(l + 1, r + 1)

#2: George and Round
n, m = map(int, input().split())
arrA = list(map(int, input().split()))
arrB = list(map(int, input().split()))

dictA = {}
dictB = {}
for i in range(len(arrA)):
    if arrA[i] in dictA:
        dictA[arrA[i]] += 1
    else:
        dictA[arrA[i]] = 1

for i in range(len(arrB)):
    if arrB[i] in dictB:
        dictB[arrB[i]] += 1
    else:
        dictB[arrB[i]] = 1

for i in range(len(arrA)):
    if arrA[i] in dictB and dictB[arrA[i]] >= dictA[arrA[i]]:
        n -= 1
print(n)
