#include<iostream>
#include<cmath>
#include<iomanip>
#include<cstdio>
#include<string>
#include<deque>
#include<stack>
#include<queue>
#include<vector>
#include<stdio.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
#include<bitset>
using namespace std;
int l,r;
int dp[45][45];
void init(){
for(int i=1;i<=40;i++){
dp[i-1][0]=1;
for(int j=1;j<=i;j++){
dp[i][j]=dp[i-1][j]+dp[i-1][j-1];
}
}
}
int ask(int u){
int w=0,a[45]={0};
while(u){
a[++w]=u%2;
u=u/2;
}
int ans=0;
for(int i=1;i<w-1;i++){
for(int j=(i+2)/2;j<=i;j++){
ans+=dp[i][j];
}
}
int sum=0;
for(int i=w-1;i>=1;i--){
if(a[i]==1){
for(int j=(w+1)/2;j<=i;j++){
if(j-sum-1<0)continue;
ans+=dp[i-1][j-sum-1];
}
}
sum=sum+1-a[i];
}
return ans;
}
int main(){
init();
cin>>l>>r;
cout<<ask(r)-ask(l-1)-1;
return 0;
}