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.
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int binarySearch(vector<int> a,int start, int end ,int find)
{
	if (start <= end)
	{
		int mid = (start + end) / 2;
		if (find < a[mid])
			return binarySearch(a, 0, mid-1, find);
		else if (find > a[mid])
			return binarySearch(a, mid + 1,end, find);
		else return mid;

	}
	return -1;
}

int main()
{
	int n, m;
	cin >> n >> m;
	vector<int> a;
	vector<int> b;
	for (int i = 0; i < n; i++)
	{
		int value;
		cin >> value;
		a.push_back(value);
	}
	for (int i = 0; i < m; i++)
	{
		int value;
		cin >> value;
		b.push_back(value);
	}
	int i = 0, j = 0;
	while (i < n && j < m)
	{
		while (j <m && b[j] < a[i])
		{
			j++;
		}
		if (a[i] <= b[j])
		{
			i++;
			j++;
		}
	}
	int ans = n - i;
	if (ans == 1)
		cout << "0";
	else cout << ans;

}
