private List <DifferentialCharacteristic> GetPermutatedOutcomes(List <DifferentialCharacteristic> characteristics)
        {
            List <DifferentialCharacteristic> permutatedOutcomes = new List <DifferentialCharacteristic>();

            foreach (DifferentialCharacteristic characteristic in characteristics)
            {
                int output = Permutation.Permutate(characteristic.OutputDifference);
                DifferentialCharacteristic newCharacteristic = new DifferentialCharacteristic(characteristic.InputDifference, output, characteristic.Probability);
                newCharacteristic.AddIntermediateOutputs(characteristic.IntermediateOutputs);
                newCharacteristic.AddUsedSubstitionBoxes(characteristic.UsedSubstitutionBoxes);

                permutatedOutcomes.Add(newCharacteristic);
            }

            return(permutatedOutcomes);
        }