dim test$(3) test$(0) = "AB" test$(1) = "AB,CD" test$(2) = "AB,CD,DB" test$(3) = "HIK,AB,CD,DB,FGH" for t = 0 to arraysize(test$(), 1) print Consolidate$(test$(t)) next t end sub Consolidate$(s$) dim sets$(100) // Split the string into substrings pio = 1 n = 0 for i = 1 to len(s$) if mid$(s$, i, 1) = "," then fin = i - 1 sets$(n) = mid$(s$, pio, fin - pio + 1) pio = i + 1 n = n + 1 fi next i sets$(n) = mid$(s$, pio, len(s$) - pio + 1) // Main logic for i = 0 to n p = i ts$ = "" for j = i to 0 step -1 if ts$ = "" p = j ts$ = "" for k = 1 to len(sets$(p)) if j > 0 then if instr(sets$(j-1), mid$(sets$(p), k, 1)) = 0 then ts$ = ts$ + mid$(sets$(p), k, 1) fi fi next k if len(ts$) < len(sets$(p)) then if j > 0 then sets$(j-1) = sets$(j-1) + ts$ sets$(p) = "-" ts$ = "" fi else p = i fi next j next i // Join the substrings into a string temp$ = sets$(0) for i = 1 to n temp$ = temp$ + "," + sets$(i) next i return s$ + " = " + temp$ end sub