#include <bits/stdc++.h>
using namespace std;
long long dp[66];
int dig(long long n) {
  int s = 0;
  while (n) {
    s++;
    n >>= 1;
  }
  return s;
}
long long f(int len, int t, long long n, bool lim) {
  if (!lim) return 1LL << (t - 1);
  long long tp = 1;
  int i;
  for (i = 1; i < len / t; i++) tp = (tp << t) + 1;
  long long ret = n / tp - (1LL << (t - 1)) + 1;
  if (ret < 0) ret = 0;
  return ret;
}
long long gao(long long n) {
  int len = dig(n);
  int i, j, k;
  long long ans = 0;
  for (i = 2; i <= len; i++) {
    memset(dp, 0, sizeof(dp));
    for (j = 1; j < i; j++)
      if (i % j == 0) {
        dp[j] = f(i, j, n, i == len);
        for (k = 1; k < j; k++)
          if (j % k == 0) dp[j] -= dp[k];
        ans += dp[j];
      }
  }
  return ans;
}
int main() {
  long long l, r;
  cin >> l >> r;
  cout << gao(r) - gao(l - 1) << endl;
  return 0;
}
