from ast import Mod import bisect import copy import decimal import fractions import heapq import itertools import math import random import sys import time from collections import Counter,deque,defaultdict from functools import lru_cache,reduce from heapq import heappush,heappop,heapify,heappushpop,_heappop_max,_heapify_max def _heappush_max(heap,item): heap.append(item) heapq._siftdown_max(heap, 0, len(heap)-1) def _heappushpop_max(heap, item): if heap and item < heap[0]: item, heap[0] = heap[0], item heapq._siftup_max(heap, 0) return item from math import gcd as GCD read=sys.stdin.read readline=sys.stdin.readline readlines=sys.stdin.readlines write=sys.stdout.write D=int(readline()) H=[int(readline()) for _ in range(3)] inf=1<<60 ans=inf for tpl in itertools.permutations([0,1,2]): if tpl[1]==1: continue HH=H[:] if D: cnt=0 for a,b in zip(tpl[:-1],tpl[1:]): if HH[a]<=HH[b]: c=(HH[b]-HH[a])//D+1 HH[b]-=c*D cnt+=c HH[b]=max(HH[b],0) if len(set(HH))==3 and HH[1] in (min(HH),max(HH)) and all(h>=0 for h in HH): ans=min(ans,cnt) if ans==inf: ans=-1 print(ans)