/*
如上所示,由正整数1,2,3……组成了一颗特殊二叉树。
我们已知这个二叉树的最后一个结点是n。现在的问题是,
结点m所在的子树中一共包括多少个结点。
比如,n = 12,m = 3那么上图中的结点13,14,15以及后面的结点都是不存在的,
结点m所在子树中包括的结点有3,6,7,12,因此结点m的所在子树中共有4个结点。
*/
#include<bits/stdc++.h>
using namespace std;
vector<int>v;
void pre_order(int m,int n)
{
if(m>n){return ;}
else if(m<=n){v.push_back(m);}
pre_order(2*m,n);//结点m的左右子树
pre_order(2*m+1,n);
}
int n,m;
int main(){
//给的是完全二叉树,偶数是左子树,奇数是右子树
//该结点X2是下一层左子树
//每层第一个数是2^n-1
//先判断层数,求中间层数节点数
while(cin>>m>>n)
{
if(m==0||n==0){break;}
pre_order(m,n);
cout<<v.size()<<endl;
v.clear();
}
return 0;
}