#include <bits/stdc++.h>
using namespace std;
int A[1000005], B[1000005];
int ans = 0;
int C[35];
int main() {
  int n, m, i, j, k, l;
  scanf("%d%d", &n, &m);
  for (i = 1; i <= n; i++) {
    scanf("%d", &A[i]);
    long long t = 1;
    for (j = 0; j < 33; j++) {
      C[j] += ((A[i] & t) != 0);
      t = (t << 1);
    }
  }
  for (j = 1; j <= m; j++) {
    scanf("%d", &B[j]);
  }
  sort(B + 1, B + 1 + m);
  for (i = 1; i <= m; i++) {
    for (j = B[i]; j < 33; j++)
      if (C[j]) break;
    if (j < 33) {
      for (k = j - 1; k >= B[i]; k--) C[k]++;
      C[j]--;
      ans++;
    }
  }
  printf("%d\n", ans);
  return 0;
}
