ab = merge(a,b)
ba = merge(b,a)
ab2 = merge(ba, ab)
aba = merge(ab, a)
ac = merge(a, c)
acb = merge(ac, b)
acab = merge(ac, ab)
...
compare(ab, ba)
compare(ba, ab)
compare(ab, ab2)
compare(ba, ab2)
compare(ab2, ab)
compare(ba2, ab)
compare(ab2, ba)
compare(ba2, ba)
...
compare(ab, aba)
...
compare(acb, acab)
...
so for merging strings, how about using character historgrams to make all this possible.