use proconio::{fastout, input}; #[fastout] fn main() { input! { _h: usize, _w: usize, a: usize, b: usize, r1: usize, c1: usize, r2: usize, c2: usize, p: usize, q: usize, } let cr = a.max(r1).min(r2); let cc = b.max(c1).min(c2); let cand = [(cr, c1), (cr, c2), (r1, cc), (r2, cc)]; let mut ans = usize::MAX; for m in cand { ans = ans.min(dist((a, b), m) + dist(m, (p, q)) + dist((p, q), (a, b))); } println!("{}", ans); } fn dist(a: (usize, usize), b: (usize, usize)) -> usize { a.0.abs_diff(b.0) + a.1.abs_diff(b.1) }