d = int(input()) h1 = int(input()) h2 = int(input()) h3 = int(input()) if d == 0: # Check if all are distinct and middle is max or min if h1 == h2 or h2 == h3 or h1 == h3: print(-1) else: if (h2 == max(h1, h2, h3)) or (h2 == min(h1, h2, h3)): print(0) else: print(-1) else: def get_candidates(H): candidates = [] max_k = 200 for k in range(max_k + 1): h = max(0, H - k * d) candidates.append((k, h)) return candidates c1 = get_candidates(h1) c2 = get_candidates(h2) c3 = get_candidates(h3) min_total = float('inf') found = False for (k1, h1_val) in c1: for (k2, h2_val) in c2: for (k3, h3_val) in c3: if h1_val == h2_val or h2_val == h3_val or h1_val == h3_val: continue if (h2_val == max(h1_val, h2_val, h3_val)) or (h2_val == min(h1_val, h2_val, h3_val)): total = k1 + k2 + k3 if total < min_total: min_total = total found = True print(min_total if found else -1)