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.
from collections import deque
from math import *
import sys
import random
from bisect import *
from functools import reduce
from sys import stdin
import copy
"""
for _ in range(int(input())):
    n,x = map(int,input().split())
    arr = list(map(int,input().split()))
    ans = set()
    for i in arr:
        if (i*x) in ans:
            ans.remove(i*x)
        elif i>=x and (i/x)%1==0 and (i//x) in ans:
            ans.remove(i//x)
        else:
            ans.add(i)
    print(ans)
for _ in range(int(input())):
    n = int(input())
    s = input()
    if n == 1:
        ans = 1
    else:
        ans = 1 if ((s[1] == s[0] ))else 0
    i = 1
    while i<n:
        if s[i]!=s[i-1]:
            prev = s[i-1]
            ans+=2
            pika = 0
            while i<n and s[i] != prev:
                i+=1
                pika += 1
            if i == n:
                ans+=pika
            else:
                ans+=(2*(pika+1))
        else:
            ans+=1
        i+=1
    print(ans)
"""
n,m = map(int,input().split())
a = list(map(int,input().split()))
b = list(map(int,input().split()))
a.sort()
b.sort()
i,j=0,0
while i<n and j<m:
    if a[i]<=b[j]:
        i+=1
        j+=1
    elif a[i]>b[j]:
        j+=1
    else:
        i+=1
print(n-i)















