var
a,b:array[0..100]of integer;
num,i,j,k,l,m,n:integer;
procedure sort(l,r: longint);
var
i,j,x,y: longint;
begin
i:=l;
j:=r;
x:=b[(l+r) div 2];
repeat
while b[i]<x do
inc(i);
while x<b[j] do
dec(j);
if not(i>j) then
begin
y:=b[i];
b[i]:=b[j];
b[j]:=y;
inc(i);
j:=j-1;
end;
until i>j;
if l<j then
sort(l,j);
if i<r then
sort(i,r);
end;
begin
read(n,m);
for i:=1 to n do read(a[i]);
for j:=1 to m do read(b[j]);
sort(1,m);
a[0]:=32767;
b[0]:=32767;
num:=m;
for i:=1 to n do
begin
k:=m;
while ((a[i]<b[k])or (b[k]=0))and(k>0) do
k:=k-1;
if k>0 then begin
num:=num-1;
b[k]:=32767;
end;
end;
write(num);
end.
#include<fstream>
#include<iostream>
#define MAXHEIGHT 300
#define MAXN 2000
//#define no false
//#define yes true
using namespace std;
#define fin cin
#define fout cout
//ifstream fin ("pid96.in");
//ofstream fout ("pid96.out");
int n,m;
int apples[MAXN];
int istaotaoin[MAXHEIGHT+1]={0};
int main (void){
memset(istaotaoin,0,sizeof(istaotaoin));
fin>>n>>m;
for (int i=0;i<n;++i)
fin>>apples[i];
for (int i=0;i<m;++i){
int position;
fin>>position;
++istaotaoin[position];
}
for (int i=0;i<n;++i){
int pos=apples[i]-1;
while (pos>0){
if (istaotaoin[pos]>0) break;
--pos;
}
if (pos>0) --istaotaoin[pos];
}
int amount=0;
for (int i=MAXHEIGHT;i>=0;--i)
amount+=istaotaoin[i];
fout<<amount;
//while(1);
return 0;
}
/*
(pid96.in)input:
5 5
9
10
2
3
1
6
7
8
9
10
(pid96.out)output:
3
*/
var
i,j,k,s,t,m,n:longint;
a,b,c:array[1..2000] of integer;
begin
read(n,m);
for i:=1 to n do
read(a[i]);
for i:=1 to m do
read(b[i]);
s:=m;
for i:=1 to m-1 do
for j:=i+1 to m do
if b[j]>b[i] then begin t:=b[i]; b[i]:=b[j];b[j]:=t;end;
for i:=1 to n do
for j:=1 to m do
if (a[i]>b[j])and(b[j]<>0) then
begin
s:=s-1;
b[j]:=0;
break;
end;
write(s);
end.