///Bismillahir Rahmanir Rahim
#include "bits/stdc++.h"

#define                           ll                          long long
#define                           int                         ll
#define                           fi                          first
#define                           si                          second
#define                           mp                          make_pair
#define                           pb                          push_back
#define                           pi                          pair<int,int>
#define                           nd(a,b,c)                   mp(mp(a,b),c)
#define                           clr(x)                      memset(x,0,sizeof(x));
#define                           f(i,l,r)                    for(int i=l;i<=r;i++)
#define                           rf(i,r,l)                   for(int i=r;i>=l;i--)
#define                           done(i)                     cout<<"done = "<<i<<endl;
#define                           show(x,y)                   cout<<x<<" : ";for(auto z:y)cout<<z<<" ";cout<<endl;
#define                           fast                        ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);

using namespace std;

const ll inf=2e18;
const int mod=1e9+7;
const int M=100005;

void solve()
{
   int a,b,c,d,z;
   cin>>a>>b>>c>>d;



   int hor=c*d-b;

   if(hor==0)
   {
       cout<<"-1\n";return ;
   }
   z=(a+hor-1)/hor;

   int cyan=z*b+a;
   int red=z*c*d;
   if(cyan>red)
   {
       cout<<"-1\n";return ;
   }
   cout<<z<<"\n";
}

 main()

{
    fast
    int t=1;
    //cin>>t;
    while(t--)
    {
        solve();
    }
    return 0;

}




































 #include <bits/stdc++.h>
using namespace std;
using ll = long long;
//素数判定　O√N
bool is_prime(long long x)
{
  assert(0<=x);
  if(x<2)
  {
    return false;
  }
  for(long long i=2;i*i<=x;i++)
  {
    if(x%i==0)
    {
      return false;
    }
  }
  return true;
}
template<class T> void chmin(T& a,T b){
    if(a>b){
        a=b;
    }
}
template<class T> void chmax(T& a,T b){
    if(a<b){
        a=b;
    }
}
//約数列挙
vector<ll> enumeration_divisor(ll n){
  vector<ll> res_divisor;
  for(ll i=1;i<=sqrt(n);i++){
    if(n%i==0){
      res_divisor.push_back(i);
      if(i*i!=n){
        res_divisor.push_back(n/i);
      }
    }
  }
  sort(res_divisor.begin(),res_divisor.end());
  return res_divisor;
}
using Graph = vector<vector<ll>>;

vector<bool> seen;
void dfs(const Graph &G, ll v){
    seen[v] = true; //vを訪問済みにする
    //vからいける各頂点next_vについて
    for(auto next_v : G[v]){
        if(seen[next_v]==true) continue; //next_vが探索済みだったらスルー
        dfs(G, next_v); //再帰的に探索
    }
}
template<typename T,typename U>
T power(T a,U n){
  T res=1;
  while(n){
    res*=(n&1)?a:1;
    a*=a;
    n>>=1;
  }
  return res;
}
const int mod = 1000000007;
class mint {
    long long x;
public:
    mint(long long x=0) : x((x%mod+mod)%mod) {}
    mint operator-() const { 
      return mint(-x);
    }
    mint& operator+=(const mint& a) {
        if ((x += a.x) >= mod) x -= mod;
        return *this;
    }
    mint& operator-=(const mint& a) {
        if ((x += mod-a.x) >= mod) x -= mod;
        return *this;
    }
    mint& operator*=(const  mint& a) {
        (x *= a.x) %= mod;
        return *this;
    }
    mint operator+(const mint& a) const {
        mint res(*this);
        return res+=a;
    }
    mint operator-(const mint& a) const {
        mint res(*this);
        return res-=a;
    }
    mint operator*(const mint& a) const {
        mint res(*this);
        return res*=a;
    }
    mint pow(ll t) const {
        if (!t) return 1;
        mint a = pow(t>>1);
        a *= a;
        if (t&1) a *= *this;
        return a;
    }
    // for prime mod
    mint inv() const {
        return pow(mod-2);
    }
    mint& operator/=(const mint& a) {
        return (*this) *= a.inv();
    }
    mint operator/(const mint& a) const {
        mint res(*this);
        return res/=a;
    }

    friend ostream& operator<<(ostream& os, const mint& m){
        os << m.x;
        return os;
    }
};
std::vector<int> Eratosthenes( const int N )
{
    std::vector<bool> is_prime( N + 1 );
    for( int i = 0; i <= N; i++ )
    {
        is_prime[ i ] = true;
    }
    std::vector<int> P;
    for( int i = 2; i <= N; i++ )
    {
        if( is_prime[ i ] )
        {
            for( int j = 2 * i; j <= N; j += i )
            {
                is_prime[ j ] = false;
            }
            P.emplace_back( i );
        }
    }
    return P;
}
bool flag[100010];
mint dp[100010];
int main(){
  ll a,b,c,d;
  cin >> a >> b >> c >> d;
  if(a==0) cout << 0 << endl;
  else if(b>=c*d) cout << -1 << endl;
  else{
    bool p=true;
    ll red=0,cnt=0;
    while(p==true){
      a+=b;
      red+=c;
      cnt++;
      if(a<=red*d){
        cout << cnt << endl;
        p=false;
      }
    }
  }
}