using diffutils algorithm