; 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)