use fmt; use bufio; use os; use shlex; use strings; use strconv; use sort; use sort::cmp; use io; export fn main() void = { do(os::stdin); }; fn do(h: io::handle) int = { const sc = bufio::newscanner(h); defer bufio::finish(&sc); let l1: []int = []; let l2: []int = []; defer free(l1); defer free(l2); for (const line => bufio::scan_line(&sc)!) { const tok = strings::tokenize(line, " "); let isfirst = true; for (const t => strings::next_token(&tok)) { if (t == "") { continue; }; const x = strconv::stoi(t)!; if (isfirst) { append(l1, x); isfirst = false; } else { append(l2, x); }; }; }; sort::sort(l1, size(int), &cmp::ints); sort::sort(l2, size(int), &cmp::ints); let sum = 0; for (let i = 0z; i < len(l1); i += 1) { const l = l1[i]; const j = l2[i]; const diff = if (l > j) { yield (l, j, l - j); } else { yield (j, l, j - l); }; fmt::printfln("{} - {} = {}", diff.0, diff.1, diff.2)!; sum += diff.2; }; fmt::println(sum)!; return sum; };