use itertools::iproduct; 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 mut ans = usize::MAX; for m in iproduct!(1..=h, 1..=w) { if !(r1 <= m.0 && m.0 <= r2 && c1 <= m.1 && m.1 <= c2) { continue; } 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) }