#include <bits/stdc++.h>
int main(void) {
  int N, H;
  scanf("%d %d", &N, &H);
  int loop = 0;
  char useable[N];
  int a[N], b[N];
  int max_throw[N];
  int max_throw_num[N];
  int enemy_HP = H;
  int count = 0;
  int base_atk_cnt = 0;
  int ans;
  int base_attack;
  int throw_cnt = 1;
  max_throw[0] = 0;
  base_attack = 0;
  while (loop != N) {
    scanf("%d %d", &a[loop], &b[loop]);
    loop++;
    if (base_attack < a[loop - 1]) {
      base_attack = a[loop - 1];
    }
    if (max_throw[0] < b[loop - 1]) {
      max_throw[0] = b[loop - 1];
      max_throw_num[0] = loop - 1;
    }
    useable[loop - 1] = 0;
  }
  useable[max_throw_num[0]] = 1;
  base_atk_cnt = enemy_HP / base_attack;
  ans = base_atk_cnt;
  int i = 1;
  while (i < N) {
    max_throw[i] = 0;
    loop = 0;
    while (loop != N) {
      if (max_throw[i] <= b[loop] && useable[loop] == 0) {
        max_throw[i] = b[loop];
        max_throw_num[i] = loop;
      }
      loop++;
    }
    useable[max_throw_num[i]] = 1;
    i++;
  }
  while (throw_cnt <= N) {
    count = 0;
    enemy_HP = H;
    while (throw_cnt != count) {
      enemy_HP = enemy_HP - max_throw[count++];
    }
    if (enemy_HP > 0) {
      count = count + (enemy_HP / base_attack);
    } else {
      if (ans > count) {
        ans = count;
      }
      break;
    }
    if (enemy_HP % base_attack > 0) {
      count++;
    }
    if (ans > count) {
      ans = count;
    }
    throw_cnt++;
    loop = 0;
    while (loop != N) {
      useable[loop] = 0;
      loop++;
    }
  }
  printf("%d\n", ans);
  return 0;
}
