ugly character by character diff