#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <string>
#include <vector>

using namespace std;

#define pb push_back
#define VI vector <int>
#define clr(x) memset((x),0,sizeof(x))
#define forn(i, n) for(int i=0; i<(int)(n); i++)

#define fori(it, x) for (__typeof((x).begin()) it = (x).begin(); it != (x).end(); it++)

#define pw(x) (1ll<<(x))

typedef long long ll;

ll g[32];
VI divs[63];
void prec()
{
    for(int i=1;i<61;i++)
        for(int j=1;j<i;j++)
            if (i%j==0)
                divs[i].pb(j);
}
inline int lg(ll n)
{
    int l = 0;
    while (n)
    {
        l++;
        n>>=1;
    }
    return l;
}

inline void upd(int i)
{
    fori(j,divs[i])
        g[i]-=g[*j];
}

ll f(ll n)
{
    if (n<=1) return 0;
    ll ans = 0;
    int l = lg(n);
    ans+=f(pw(l-1) - 1);
    clr(g);
    fori(it, divs[l])
    {
        int i = *it;
        ll t = n >> (l-i);
        ll p = t;
        forn(j,l/i-1)
            p = (p << i) + t;
        if (p <= n) g[i]++;
        g[i] += t - pw(i-1);
        upd(i);
        ans += g[i];
    }
    return ans;
}

int main()
{
    prec();
    ll l,r;
    cin >> l >> r;
    cout << f(r)-f(l-1);
    return 0;
}
