rt,过不了样例
#include <bits/stdc++.h>
using namespace std;
inline int read(){
int x=0;bool f=1;char c=getchar();
while(c>'9'||c<'0'){if(c=='-')f=0;c=getchar();}
while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c^48);c=getchar();}
return f?x:-x;
}
int l,r,a[35],len,f[35][65];
int dfs(int pos,bool qdl,bool limit,int s){
if(!pos) return s>=30;
if(!limit&&!qdl&&(~f[pos][s])) return f[pos][s];
int up=a[pos]|(limit^1);
f[pos][s]=0;
for(int i=0;i<=up;i++)
f[pos][s]+=dfs(pos-1,i?0:qdl,limit&(i==up),s+(i?-1:(qdl?0:1)));
return f[pos][s];
}
inline int ans(int x){
len=0;
while(x)
a[++len]=(x&1),x>>=1;
return dfs(len,1,1,30);
}
int main(){
memset(f,-1,sizeof f);
l=read(),r=read();
printf("%d\n",ans(r)-ans(l-1));
return 0;
}