Thanks,
I can try to give some explanations.
First, as we know, LISP is more comfortable (and faster) with lists than with strings and lists are cheaper to compute from the head (car), so the main function converts the 2 strings into 2 ascii codes lists and reverse them before using with the three little local functions (foo bar baz)
baz evaluates if the first list is 'lower' than the second one.
bar 'increments' an ascii codes list by 1.
foo build the list of 'incremted' lists.