/*
Sat-Chitta-Ananda
*/

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

int32_t main()
{
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	//freopen("in.txt", "r", stdin);
	
	int x, y; cin >> x >> y;
	int a; cin >> a;
	int b; cin >> b;
	int e = 0;

	while(x < y)
	{
		if(LLONG_MAX/x >= a && x*a <= x+b) x *= a, ++e;
		else {
			e += (y-x)/b;
			if((y-x)%b != 0) ++e;
			break;
		}
	}

	cout << e-1 << '\n';
	return 0;
}
// Created by ...
#include <bits/stdc++.h>

#define db1(x) cout<<#x<<"="<<x<<'\n'
#define db2(x,y) cout<<#x<<"="<<x<<","<<#y<<"="<<y<<'\n'
#define db3(x,y,z) cout<<#x<<"="<<x<<","<<#y<<"="<<y<<","<<#z<<"="<<z<<'\n'

#define vll vector< ll >
#define M 100000
#define MD 1000000007
#define pb push_back
#define rep(i,a,b) for(ll i = a; i <= b; ++i)
#define fo(i,a,b) for(int i = a; i<= b; ++i)
#define pii pair<ll,ll> 
#define vec(a) vector<a >
#define all(a) a.begin(),a.end()
#define se second
#define fi first
#define inf 0xffffffff
#define inchar getchar_unlocked
#define outchar(x) putchar_unlocked(x)
//#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)

using namespace std;
using ll = long long;
ll md=MD;

ll exp(ll a,ll b){ll r=1ll;while(b>0){if(b&1){r=r*(a%md);r=(r+md)%md;}b>>=1;a=(a%md)*(a%md);a=(a+md)%md;}return (r+md)%md;}
ll gcd(ll a,ll b){if(b==0)return a;return gcd(b,a%b);}
ll Min(ll a,ll b){if(a<b)return a; return b;}
ll Max(ll a,ll b){if(a>b)return a; return b;}
int32_t main() {
    IOS;

        unsigned long long int x,y,a,b,exp=0;
        cin>>x>>y>>a>>b;
        
        while(x<y && x*a<x+b){
        	if(x*a>=y || x*a<x)break;
        	x*=a;
        	if(x<0)break;
        	++exp;
        }
        exp+=Max(0,(y-x-1)/b);
        cout<<exp;

        cout<<'\n';
    return 0;
}