#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
const int N = 64 + 10;
int dp[N];
long long cal(int n) {
  long long ans = 1ll << (n - 1);
  for (int k = 1; k < n; k++)
    if (n % k == 0) {
      ans -= dp[k];
    }
  return ans;
}
long long calc(long long x, int lit) {
  if (x == 0) return 0;
  int d[N], n = 0;
  long long y = x;
  while (y) {
    d[n++] = y & 1;
    y >>= 1;
  }
  long long ans = 0;
  if (lit) {
    for (int m = 1; m < n; m++) {
      for (int k = 1; k < m; k++)
        if (m % k == 0) {
          ans += dp[k];
        }
    }
  }
  for (int k = 1; k < n; k++)
    if (n % k == 0) {
      int l = n / k;
      long long fir = 0;
      for (int i = 0; i < k; i++) {
        fir = fir * 2 + d[n - 1 - i];
      }
      long long tmp = 0;
      for (int i = 0; i < l; i++) {
        tmp = (tmp << k) + fir;
      }
      if (tmp > x) fir--;
      if (fir & (1 << (k - 1))) {
        ans += fir - (1 << (k - 1)) + 1 - calc(fir, 0);
      }
    }
  return ans;
}
int main() {
  for (int i = 1; i < N; i++) dp[i] = cal(i);
  long long l, r;
  cin >> l >> r;
  cout << calc(r, 1) - calc(l - 1, 1);
  return 0;
}
