Problem:
Score : 300 points

Problem Statement

As a token of his gratitude, Takahashi has decided to give his mother an integer sequence.
The sequence A needs to satisfy the conditions below:

A consists of integers between X and Y (inclusive).

For each 1\leq i \leq |A|-1, A_{i+1} is a multiple of A_i and strictly greater than A_i.

Find the maximum possible length of the sequence.

Constraints

1 \leq X \leq Y \leq 10^{18}

All input values are integers.

Input

Input is given from Standard Input in the following format:

X Y

Output

Print the maximum possible length of the sequence.

Sample Input 1

3 20

Sample Output 1

3

The sequence 3,6,18 satisfies the conditions.

Sample Input 2

25 100

Sample Output 2

3

Sample Input 3

314159265 358979323846264338

Sample Output 3

31

Solution in C++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#include <bits/stdc++.h>
using namespace std;

#define REP(i,n) for(decltype(n) i=0;i<(n);++i)
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define FORD(i,a,b) for(int i=(a);i>=(b);--i)
#define ALL(c) (c).begin(), (c).end()
#define SIZE(c) ((int)((c).size()))
#define st first
#define nd second
#define pb push_back

typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<vector<int>> vvi;
typedef vector<bool> vb;
typedef long long ll;

bool check(int i, int k, const vi& v){
    vb b(v.size(), true);
    int j=i;
    for(;i<SIZE(v)-1;++i){
        if(!b[i])
            continue;
        while(j<SIZE(v) && (!b[j] || v[j]-v[i]<k)) ++j;
        if(j<SIZE(v)){
            if(j<SIZE(v)-1)
                b[j]=false;
            while(j+2<SIZE(v)){
                b[j+1]=false;
                if(j+2<SIZE(v)-1)
                    b[j+2]=false;
                j+=2;
            }
        }
        else return false;
    }
    return true;
}

bool ok(int k,const vi& v){
    return check(0,k,v) || check(1,k,v);
}

void solve(){
    string s;
    cin>>s;
    char cur=-1;
    vi num;
    REP(i, SIZE(s)){
        if(s[i]!=cur){
            num.pb(i);
            cur=s[i];
        }
    }
    num.pb(SIZE(s));
    int l=1, r=SIZE(s);
    while(l<r){
        int m=(l+r+1)/2;
        if(ok(m,num))
            l=m;
        else
            r=m-1;
    }
    cout<<l;
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    solve();
    return 0;
}