N, H = map(int,input().split())
damage_low = [0 for i in range(0,N)]
damage_high = [0 for i in range(0,N)]
count = 0

for i in range(0,N):
    a, b = map(int,input().split())
    damage_low[i] = a
    damage_high[i] = b

damage_low.sort()  #小さいもの順に並べる
damage_high.sort()  
damage_high.reverse()  #降順になる

for i in range(0,N):  #刀を強いもの順に投げる
    if damage_high[i] > damage_low[N-1]:  #一番強い刀の振りより小さければ投げる必要はない
        H = H - damage_high[i]
        count += 1
    if H <= 0:  #投げてる途中でHPが0になったら抜け出す
        break

while H > 0:  #まだHPがのこっているなら一番強い刀で振りまくる
    H = H -damage_low[N-1]
    count += 1

print(count)