#pragma GCC optimize("Ofast")
#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read()
{
	int x=0;
	bool flag=1;
	char c=getchar();
	while(c<'0'||c>'9')
	{
		if(c=='-')
			flag=0;
		c=getchar();
	}
	while(c>='0'&&c<='9')
	{
		x=(x<<1)+(x<<3)+c-'0';
		c=getchar();
	}
	return (flag?x:~(x-1));
}
int a,b,c,d;
signed main()
{
	a=read();
	b=read();
	c=read();
	d=read();
	int l=0,r=1e8;
	while(l<=r)
	{
		int mid=(l+r)>>1;
		int x=a+mid*b,y=mid*c;
		if(y*d>=x)
			r=mid-1;
		else
			l=mid+1;
	}
	if(l==1e8+1)
		puts("-1");
	else
		cout<<l<<endl;
	return 0;
}

#include<bits/stdc++.h>
#define vll vector<long long>
#define ll long long
#define dbg(x) cout << #x << " " << x <<endl;
#define forn(i,n) for(int i=0;i<(int)n;i++)
#define farn(i,x,n) for(int i=x;i<=(int)n;i++)
#define rforn(i,n) for(int i=n-1;i>=0;i--)
#define rep(i,s,n) for(int i=s;i<n;i++)
#define sz(x) ((int)x.size())
#define clr(x) memset(x,0,sizeof(x))
#define sa(v) sort(v.begin(), v.end())
#define sd(v) sort(v.begin(),v.end(), greater<int>())
#define pb push_back
#define mp make_pair
#define Max(x,y,z) max(x,max(y,z))
#define Min(x,y,z) min(x,min(y,z))
#define ff first
#define ss second
#define cl(a,b) (a+b-1)/b
#define endl "\n"
#define IOS ios_base::sync_with_stdio(false); cin.tie(NULL)
const int mod = 1000000007;//1e9+7
const int INF = 2e9 + 2;
const int N = 2e5+5;

using namespace std;

ll a, b, c, d;
void sol ()
{
    cin >> a >> b>>c>>d;
    
    if(d*c - b <= 0)cout<<-1;
    else
        cout<<cl(a,(d*c - b));



    cout<<endl;
    
}



int main(){
    int TC;
    TC = 1;
    // cin >> TC;
    while (TC--) 
    {
        sol();        
       
    }
    return 0;
}