#include <bits/stdc++.h>
int n, m, ans, i, j;
struct nodfar {
  int t;
  bool z;
};
bool F(nodfar a, nodfar b) { return a.t < b.t; }
nodfar a[101], b[101];
void solve() {
  scanf("%i", &n);
  for (i = 0; i < n; i++) {
    scanf("%i", &a[i].t);
    a[i].z = 0;
  }
  scanf("%i", &m);
  for (i = 0; i < m; i++) {
    scanf("%i", &b[i].t);
    b[i].z = 0;
  }
  std::sort(a, a + n, F);
  std::sort(b, b + m, F);
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
      if (abs(a[i].t - b[j].t) <= 1 && a[i].z == 0 && b[j].z == 0) {
        a[i].z = 1;
        b[j].z = 1;
        ans++;
      }
    }
  }
  if (b[0].t - a[n - 1].t > 1 || a[0].t - b[m - 1].t > 1) {
    ans = 0;
  }
  printf("%i", ans);
}
int main() { solve(); }
