Diff implementation (Hunt-McIlroy; consider switching to Myers-Ukkonen)