#include<stdio.h>
int D[1212][1212];
int a[1212], b[1212];
int max(int a, int b) { if (a < b)return b; return a;}
int jd(int x) { if (x < 0)return -x; return x; }
int main() {
int n,i,j;
scanf("%d", &n);
for (i = 1; i <= n; i++)scanf("%d", &a[i]);
for (i = 1; i <= n; i++)scanf("%d", &b[i]);
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++) {
if (jd(a[i] - b[j]) <= 4) D[i][j] = D[i - 1][j - 1] + 1;
else D[i][j] = max(D[i - 1][j], D[i][j - 1]);
}
}
printf("%d", D[n][n]);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KaW50IERbMTIxMl1bMTIxMl07CmludCBhWzEyMTJdLCBiWzEyMTJdOwppbnQgbWF4KGludCBhLCBpbnQgYikgewlpZiAoYSA8IGIpcmV0dXJuIGI7IHJldHVybiBhO30KaW50IGpkKGludCB4KSB7IGlmICh4IDwgMClyZXR1cm4gLXg7IHJldHVybiB4OyB9CmludCBtYWluKCkgewoJaW50IG4saSxqOwoJc2NhbmYoIiVkIiwgJm4pOwoJZm9yIChpID0gMTsgaSA8PSBuOyBpKyspc2NhbmYoIiVkIiwgJmFbaV0pOwoJZm9yIChpID0gMTsgaSA8PSBuOyBpKyspc2NhbmYoIiVkIiwgJmJbaV0pOwoJZm9yIChpID0gMTsgaSA8PSBuOyBpKyspIHsKCQlmb3IgKGogPSAxOyBqIDw9IG47IGorKykgewoJCQlpZiAoamQoYVtpXSAtIGJbal0pIDw9IDQpIERbaV1bal0gPSBEW2kgLSAxXVtqIC0gMV0gKyAxOwoJCQllbHNlIERbaV1bal0gPSBtYXgoRFtpIC0gMV1bal0sIERbaV1baiAtIDFdKTsKCQl9Cgl9CglwcmludGYoIiVkIiwgRFtuXVtuXSk7CglyZXR1cm4gMDsKfQ==