code: public class FindMissingPermutation
  {
    public static void main(String[] args)
    {
      String[] givenPermutations = { "ABCD", "CABD", "ACDB", "DACB", "BCDA", "ACBD",
                                     "ADCB", "CDAB", "DABC", "BCAD", "CADB", "CDBA",
                                     "CBAD", "ABDC", "ADBC", "BDCA", "DCBA", "BACD",
                                     "BADC", "BDAC", "CBDA", "DBCA", "DCAB" };
      String characterSet = givenPermutations[0];
      // Compute n! * (n - 1) / 2
      int maxCode = characterSet.length() - 1;
      for (int i = characterSet.length(); i >= 3; i--)
        maxCode *= i;
      StringBuilder missingPermutation = new StringBuilder();
      for (int i = 0; i < characterSet.length(); i++)
      {
        int code = 0;
        for (String permutation : givenPermutations)
          code += characterSet.indexOf(permutation.charAt(i));
        missingPermutation.append(characterSet.charAt(maxCode - code));
      }
      System.out.println("Missing permutation: " + missingPermutation.toString());
    }
  }
  