#include <bits/stdc++.h>
using namespace std;
int maxz(int a, int b) { return a > b ? a : b; }
int minz(int a, int b) { return a < b ? a : b; }
int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
int lcm(int a, int b) { return a / gcd(b, a) * b; }
int cnt[123];
int p[1000005];
int main() {
  int n, m;
  cin >> n >> m;
  int i;
  int a;
  int tot;
  for (i = 0; i < n; i++) {
    scanf("%d", &a);
    tot = 0;
    while (a) {
      if (a & 1) cnt[tot]++;
      a >>= 1;
      tot++;
    }
  }
  int ans = 0;
  for (i = 0; i < m; i++) scanf("%d", &p[i]);
  sort(p, p + m);
  for (i = 0; i < m; i++) {
    a = p[i];
    if (cnt[a]) {
      cnt[a]--;
      ans++;
    } else {
      int flag = 0;
      int j;
      for (j = a + 1; j < 31; j++) {
        if (cnt[j]) {
          ans++;
          flag = 1;
          cnt[j]--;
          break;
        }
      }
      if (flag) {
        for (j--; j >= a; j--) {
          cnt[j]++;
        }
      }
    }
  }
  printf("%d\n", ans);
  return 0;
}
