#include <bits/stdc++.h>
using namespace std;
struct Weapon {
  long long no, a, b;
  bool operator<(const Weapon& another) const {
    if (b != another.b) return b > another.b;
    if (a != another.a) return a > another.a;
    return no < another.no;
  }
};
long long N, H, K;
int main() {
  cin >> N >> H;
  vector<Weapon> vec(N);
  for (int i = 0; i < N; i++) {
    vec[i].no = i;
    cin >> vec[i].a >> vec[i].b;
  }
  long long MAX_a = 0;
  long long MAX_a_no = 0;
  for (int i = 0; i < N; i++) {
    if (vec[i].a > MAX_a) {
      MAX_a = vec[i].a;
      MAX_a_no = i;
    }
  }
  for (int i = 0; i < N; i++) {
    if (vec[i].b > vec[MAX_a_no].a) {
      H = H - vec[i].b;
      K++;
      if (H <= 0) {
        break;
      }
    }
  }
  while (true) {
    if (H <= 0) {
      break;
    }
    H = H - vec[MAX_a_no].a;
    K++;
  }
  cout << K << endl;
  return 0;
}
