use proconio::{fastout, input}; #[fastout] fn main() { input! { t: usize, cases: [(usize,usize,usize,usize); t], } let idx = |x: usize, y: usize| (y, x / (1 << (y.min(32)))); for (sx, sy, tx, ty) in cases { let (mut s, mut t) = (idx(sx, sy), idx(tx, ty)); let mut ans = 0; while s != t { if s.1 == 0 && t.1 == 0 { ans += s.0.abs_diff(t.0); break; } else if s < t { s = (s.0 + 1, s.1 / 2); } else { t = (t.0 + 1, t.1 / 2); } ans += 1; } println!("{}", ans); } }