p = toSet[trim[splitLines["""ABCD CABD ACDB DACB BCDA ACBD ADCB CDAB DABC BCAD CADB CDBA CBAD ABDC ADBC BDCA DCBA BACD BADC BDAC CBDA DBCA DCAB"""]]] s = ["A","B","C","D"] for n = s.lexicographicPermute[] { str = join["", n] if ! p.contains[str] println[str] }