/*
 蟻本 例題 2-1-1　部分和問題 の類題
 ABC 104 C - All Green
 
 問題を解く組み合わせを全部調べるには時間が足りない(ノ)•̥ૅㅁ•̥(ヾ)
 そこで,
 ある難易度の問題を全問解く(or 解かない) + 解き切っていない問題で一番得点の高い問題をいくつか解く
 場合に限って調べる٩(๑❛ᴗ❛๑)۶
 */
// bit全(?)探索
let DG: [Int] = readLine()!.split(separator: " ").map { Int($0)! }
let pc: [[Int]] = (1...DG[0]).map { _ in readLine()!.split(separator: " ").map { Int($0)! }}
var res: Int = 1100 // 問題数は最大で 10 * 100 問

let w: Int = Array(repeating: 2, count: DG[0]).reduce(1, *)  // 各難易度の問題を解き切るかどうかの場合の数

for i in 0..<w {
    var num2 = String(i, radix: 2)  // 2進数へ変換
    num2 = String(repeating: "0", count: DG[0]-num2.count) + num2   // 001 みたいになるように0埋め

    var score: Int = 0
    var count: Int = 0
    var idx0: Int = 0   // 解き切ってない難易度で最大の難易度

    for (j, k) in num2.enumerated() {
        if k=="1" { // 難易度 j+1 の問題を解き切る
            score += 100*(j+1)*pc[j][0] + pc[j][1]
            count += pc[j][0]
        } else {
            idx0 = j    // 難易度 j+1 を解ききらない
        }
    }
    if score >= DG[1] { // 目標達成しているか(・・？)
        res = min(res, count)
        continue
    }
    
    // 解き切っていない難易度のうち最高難易度の問題を1問ずつ解く
    for j in 1...pc[idx0][0] {
        score += 100*(idx0+1)
        count += 1
        if j==pc[idx0][0] { score += pc[idx0][1] }  // 解き切ったとき
        if score >= DG[1] { // 目標達成しているか(・・？)
            res = min(res, count)
            break
        }
    }
}
print(res)   // (๑•ૅㅁ•๑)