#include <bits/stdc++.h>
using namespace std;
struct node {
  long long x;
  long long y;
};
long long gcd(long long a, long long b) {
  return b == 0 ? a : a > b ? gcd(b, a % b) : gcd(a, b % a);
}
bool myfunc(struct node a, struct node b) {
  if (a.x == b.x) {
    return a.y < b.y;
  } else {
    return a.x < b.x;
  }
}
int main() {
  long long a[10000];
  long long b[10000];
  int n;
  int m;
  int i;
  cin >> n;
  for (i = 1; i <= n; i++) {
    cin >> a[i];
  }
  cin >> m;
  for (i = 1; i <= m; i++) {
    cin >> b[i];
  }
  sort(a + 1, a + n + 1);
  sort(b + 1, b + m + 1);
  i = n;
  int j;
  j = m;
  long long sum = 0;
  while (1) {
    if (i <= 0 || j <= 0) {
      break;
    }
    long long t = a[i] - b[j];
    if (t < 0) {
      t = t * -1;
    }
    if (t <= 1) {
      sum++;
      i--;
      j--;
    } else {
      if (a[i] > b[j]) {
        i--;
      } else {
        j--;
      }
    }
  }
  cout << sum << endl;
  return 0;
}
