#include <bits/stdc++.h>
using namespace std;
static const int Max = 1e5 + 1;
int n, h;
int a[Max], b[Max];
int kiruhito;
int ans;
vector<int> nageru;
int main(void) {
  cin >> n >> h;
  for (int i = 0; i < n; ++i) {
    cin >> a[i] >> b[i];
    if (a[i] < a[kiruhito]) continue;
    if (a[i] == a[kiruhito] && b[kiruhito] <= b[i] && i != 0) continue;
    kiruhito = i;
  }
  for (int i = 0; i < n; ++i) {
    if (b[i] < a[kiruhito]) continue;
    if (i == kiruhito) continue;
    nageru.push_back(b[i]);
  }
  sort(nageru.begin(), nageru.end());
  reverse(nageru.begin(), nageru.end());
  for (auto itr = nageru.begin(); itr != nageru.end(); ++itr) {
    if (h <= b[kiruhito]) {
      ++ans;
      cout << ans << endl;
      return 0;
    }
    h -= *itr;
    ++ans;
  }
  while (true) {
    if (h <= b[kiruhito]) {
      h -= b[kiruhito];
    } else {
      h -= a[kiruhito];
    }
    ++ans;
    if (h <= 0) break;
  }
  cout << ans << endl;
  return 0;
}
