; find the difference
(define (sum xs) (apply + xs))
(define (diff1 xstr ystr)
(let loop ((xs (sort (string->list xstr) char<?))
(ys (sort (string->list ystr) char<?)))
(cond ((null? xs) (car ys))
((char=? (car xs) (car ys))
(loop (cdr xs) (cdr ys)))
(else (car ys)))))
(display (diff1 "abcdef" "bfxdeac")) (newline)
(define (diff2 xstr ystr)
(let ((x (sum (map char->integer (string->list xstr))))
(y (sum (map char->integer (string->list ystr)))))
(integer->char (- y x))))
(display (diff2 "abcdef" "bfxdeac")) (newline)
OyBmaW5kIHRoZSBkaWZmZXJlbmNlCgooZGVmaW5lIChzdW0geHMpIChhcHBseSArIHhzKSkKCihkZWZpbmUgKGRpZmYxIHhzdHIgeXN0cikKICAobGV0IGxvb3AgKCh4cyAoc29ydCAoc3RyaW5nLT5saXN0IHhzdHIpIGNoYXI8PykpCiAgICAgICAgICAgICAoeXMgKHNvcnQgKHN0cmluZy0+bGlzdCB5c3RyKSBjaGFyPD8pKSkKICAgIChjb25kICgobnVsbD8geHMpIChjYXIgeXMpKQogICAgICAgICAgKChjaGFyPT8gKGNhciB4cykgKGNhciB5cykpCiAgICAgICAgICAgIChsb29wIChjZHIgeHMpIChjZHIgeXMpKSkKICAgICAgICAgIChlbHNlIChjYXIgeXMpKSkpKQoKKGRpc3BsYXkgIChkaWZmMSAiYWJjZGVmIiAiYmZ4ZGVhYyIpKSAobmV3bGluZSkKCihkZWZpbmUgKGRpZmYyIHhzdHIgeXN0cikKICAobGV0ICgoeCAoc3VtIChtYXAgY2hhci0+aW50ZWdlciAoc3RyaW5nLT5saXN0IHhzdHIpKSkpCiAgICAgICAgKHkgKHN1bSAobWFwIGNoYXItPmludGVnZXIgKHN0cmluZy0+bGlzdCB5c3RyKSkpKSkKICAgIChpbnRlZ2VyLT5jaGFyICgtIHkgeCkpKSkKCihkaXNwbGF5ICAoZGlmZjIgImFiY2RlZiIgImJmeGRlYWMiKSkgKG5ld2xpbmUp