program FAIRPLAY;
const
maxN = 100000;
var
n: longint;
a, b, result: array[1..maxN] of longint;
procedure quickSort(var arr: array of longint; left, right: longint);
var
i, j, pivot, temp: longint;
begin
if left < right then
begin
i := left;
j := right;
pivot := arr[(left + right) div 2];
while i <= j do
begin
while arr[i] < pivot do
Inc(i);
while arr[j] > pivot do
Dec(j);
if i <= j then
begin
temp := arr[i];
arr[i] := arr[j];
arr[j] := temp;
Inc(i);
Dec(j);
end;
end;
quickSort(arr, left, j);
quickSort(arr, i, right);
end;
end;
procedure solve;
var
i, j, k: longint;
begin
quickSort(a, 1, n);
quickSort(b, 1, n);
j := 1;
k := n;
for i := 1 to n do
begin
while (j <= n) and (a[i] > b[j]) do
Inc(j);
if j <= n then
begin
Inc(result[j]);
Inc(j);
end
else
begin
Inc(result[k]);
Dec(k);
end;
end;
end;
procedure output;
var
i, maxPoints: longint;
begin
maxPoints := -1;
for i := 1 to n do
begin
if result[i] > maxPoints then
maxPoints := result[i];
end;
writeln(maxPoints);
end;
begin
assign(input, 'FAIRPLAY.INP');
reset(input);
assign(output, 'FAIRPLAY.OUT');
rewrite(output);
readln(n);
for i := 1 to n do
read(a[i]);
readln;
for i := 1 to n do
read(b[i]);
solve;
output;
close(input);
close(output);
end.