use proconio::{fastout, input}; #[fastout] fn main() { input! { t: usize } for _ in 0..t { input! { sx: u128, sy: u128, tx: u128, ty: u128, } let ans = solve(sx, sy, tx, ty); println!("{ans}"); } } fn solve(sx: u128, sy: u128, tx: u128, ty: u128) -> u128 { if sy != ty { let y = sy.max(ty); return sy.abs_diff(ty) + solve(sx, y, tx, y); } let mut ans = u128::MAX; for y in sy.. { let w = 2u128.saturating_pow(y.min(u32::MAX as _) as _); let sq = sx / w; let tq = tx / w; let cand = y.abs_diff(sy) * 2 + sq.abs_diff(tq); ans = ans.min(cand); if sq == tq { break; } } ans }