//#include<iostream>
//#include<cstdio>
//#include<cstring>
//#include<cmath>
//#include<algorithm>
//using namespace std;
//int n,m,tot;
//void dg(int i)
//{
// tot++;
//// printf("%d ",i);
// if(i==1)
// {
//// printf("1");
// return ;
// }
// if(i%2)
// {
// dg(i*3+1);
// }
// else dg(i/2);
// return ;
//}
//int main()
//{
// n=22;
// for(int i=1;i<=1000;i++)
// {
// printf("%d ",tot);
// tot=0;
// dg(i);
// }
// return 0;
//}
//#include<iostream>
//#include<cstdio>
//#include<cstring>
//#include<cmath>
//#include<algorithm>
//using namespace std;
//int n,m,tot,v[20005];
//void bfs(int x,int tims)
//{
// v[x]=tims;
// if(x*2<=20000&&tims<=v[x*2]) bfs(x*2,tims+1);
// if((x-1)/3>=1&&tims<=v[(x-1)/3]&&(x-1)%3==0) bfs((x-1)/3,tims+1);
// return ;
//}
//int main()
//{
// n=22;
// memset(v,0x3f3f3f,sizeof(v));
// bfs(1,1);
// for(int i=1;i<=n;i++)
// {
// printf("%d ",v[i]);
// }
// return 0;
//} //40pts
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int l,r,n,m,tot,v[30005];
int dg(int i)
{
if(v[i])
{
return v[i];
}
if(i%2&&i*3+1<=30000)
{
return v[i]=dg(i*3+1)+1;
}
else return v[i]=dg(i/2)+1;
}
int main()
{
v[1]=1;
for(int i=1;i<=1000;i++) dg(i);
for(int i=1;i<=1000;i++)
{
// printf("%d ",v[i]);
}
while(cin>>l>>r)
{
int ans=0;
while(l<=r)
{
ans=max(ans,v[l]);
l++;
}
printf("%d\n",ans);
}
return 0;
}