#include <bits/stdc++.h>
using namespace std;
long long ret[70];
long long qpow(long long a, long long n) {
  long long ret = 1;
  while (n) {
    if (n & 1) ret = ret * a;
    a = a * a;
    n >>= 1;
  }
  return ret;
}
void solve() {
  ret[0] = 1;
  for (long long i = 1; i < 64; i++) {
    ret[i] = ret[i - 1] + qpow(2, i);
  }
}
vector<long long> res;
void getans() {
  for (long long i = 0; i < 64; i++) {
    long long tmp = qpow(2, i);
    for (long long j = i + 1; j < 64; j++) {
      res.push_back(ret[j] - tmp);
    }
  }
}
int main() {
  solve();
  getans();
  long long a, b;
  cin >> a >> b;
  sort(res.begin(), res.end());
  long long pos1 = upper_bound(res.begin(), res.end(), a) - res.begin();
  long long pos3 = lower_bound(res.begin(), res.end(), a) - res.begin();
  long long pos2 = upper_bound(res.begin(), res.end(), b) - res.begin();
  long long pos4 = lower_bound(res.begin(), res.end(), b) - res.begin();
  long long ans = pos2 - pos1;
  if (pos3 < pos1) ans++;
  cout << ans << endl;
  return 0;
}
