#include <bits/stdc++.h>
using namespace std;
struct katana {
  long shake_power, throw_power;
};
bool compare(katana katana1, katana katana2) {
  return katana1.throw_power > katana2.throw_power;
}
int main() {
  int N;
  long H;
  cin >> N >> H;
  katana katanas[N];
  katana max_shake_power = {0, 0};
  for (int i = 0; i < N; i++) {
    cin >> katanas[i].shake_power >> katanas[i].throw_power;
    if (max_shake_power.shake_power < katanas[i].shake_power ||
        (max_shake_power.shake_power == katanas[i].shake_power &&
         max_shake_power.throw_power > katanas[i].throw_power)) {
      max_shake_power = katanas[i];
    }
  }
  int max_shake_power_katana = 0;
  sort(katanas, katanas + N, compare);
  for (int i = 0; i < N; i++) {
    if (katanas[i].shake_power == max_shake_power.shake_power &&
        katanas[i].throw_power == max_shake_power.throw_power) {
      max_shake_power_katana = i;
      break;
    }
  }
  long ans = 1e9;
  long throw_power_sum = 0;
  long used_count = 0;
  for (int i = 0; i < N; i++) {
    ans = min(ans, (H - throw_power_sum - max_shake_power.throw_power - 1) /
                           max_shake_power.shake_power +
                       used_count + 2);
    if (i != max_shake_power_katana) {
      used_count++;
      throw_power_sum += katanas[i].throw_power;
      if (H <= throw_power_sum) {
        ans = min(ans, used_count);
        break;
      } else if (H <= throw_power_sum + max_shake_power.throw_power) {
        ans = min(ans, used_count + 1);
        break;
      }
    }
  }
  cout << ans << endl;
}
