#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e17 + 7;
const int N = 100;
const int M = 20;
vector<int> mem;
vector<int> arr;
int main() {
  int n, m;
  scanf("%d %d", &n, &m);
  for (int i = 0; i < n; i++) {
    int t;
    scanf("%d", &t);
    int cnt = 0;
    while (t) {
      if (t & 1) mem.push_back(1 << cnt);
      cnt++;
      t >>= 1;
    }
  }
  for (int i = 0; i < m; i++) {
    int t;
    scanf("%d", &t);
    arr.push_back(1 << t);
  }
  sort(mem.begin(), mem.end());
  sort(arr.begin(), arr.end());
  int p = 0;
  int ans = 0;
  for (int i = 0; i < arr.size() && p < mem.size(); i++) {
    while (p < mem.size() && arr[i] > mem[p]) p++;
    if (p < mem.size()) {
      mem[p] -= arr[i];
      ans++;
    }
  }
  printf("%d\n", ans);
}
