#include <bits/stdc++.h>
using namespace std;
struct knife {
  int att1, att2;
} a[100010];
int n, h;
bool cmp(knife a, knife b) { return max(a.att1, a.att2) > max(b.att1, b.att2); }
int main() {
  scanf("%d%d", &n, &h);
  for (int i = 1; i <= n; ++i) {
    scanf("%d%d", &a[i].att1, &a[i].att2);
  }
  sort(a + 1, a + n + 1, cmp);
  int cnt = 0, i = 1;
  while (h > 0 && i < n && a[i].att1 < a[i].att2) {
    ++cnt;
    h -= a[i++].att2;
  }
  if (h <= 0) {
    cout << cnt << endl;
  } else if (a[i].att1 >= a[i].att2) {
    cout << cnt + h / a[i].att1 + (h % a[i].att1 != 0) << endl;
  } else {
    ++cnt;
    h -= a[i].att2;
    if (h <= 0) {
      cout << cnt << endl;
    } else {
      cout << cnt + h / a[i].att1 + (h % a[i].att1 != 0) << endl;
    }
  }
  return 0;
}
