Code:
using System;
using System.Collections.Generic;

namespace PermutationsOfInteger
{
    class Program
    {
        static void Main(string[] args)
        {
            PrintResult(
                Permute(new int[] { 1,2,3 })
            );
        }

        static IList<IList<int>> Permute(int[] nums)
        {
            var list = new List<IList<int>>();
            return DoPermute(nums, 0, nums.Length - 1, list);
        }

        static IList<IList<int>> DoPermute(int[] nums, int start, int end, IList<IList<int>> list)
        {
            if (start == end)
            {
                // We have one of our possible n! solutions,
                // add it to the list.
                list.Add(new List<int>(nums));
            }
            else
            {
                for (var i = start; i <= end; i++)
                {
                    Swap(ref nums[start], ref nums[i]);
                    DoPermute(nums, start + 1, end, list);
                    Swap(ref nums[start], ref nums[i]);
                }
            }

            return list;
        }

        static void Swap(ref int a, ref int b)
        {
            var temp = a;
            a = b;
            b = temp;
        }

        static void PrintResult(IList<IList<int>> lists)
        {
            Console.WriteLine("[");
            foreach (var list in lists)
            {
                Console.WriteLine($"    [{string.Join(',', list)}]");
            }
            Console.WriteLine("]");
        }
    }
}
Here is good code for permutation from the link: https://www.chadgolden.com/blog/find...ray-in-c-sharp

Question: How can I change this so it can do permutation only
- even with even
- odd with odds

for example:

Here is list ALL pemutatitions for {"AAA", "BBB", "CCC", "DDD", "EEE"}


AAA+BBB+CCC+DDD+EEE
AAA+BBB+CCC+EEE+DDD
AAA+BBB+DDD+CCC+EEE
AAA+BBB+DDD+EEE+CCC
AAA+BBB+EEE+DDD+CCC
AAA+BBB+EEE+CCC+DDD
AAA+CCC+BBB+DDD+EEE
AAA+CCC+BBB+EEE+DDD
AAA+CCC+DDD+BBB+EEE
AAA+CCC+DDD+EEE+BBB
AAA+CCC+EEE+DDD+BBB
AAA+CCC+EEE+BBB+DDD
AAA+DDD+CCC+BBB+EEE
AAA+DDD+CCC+EEE+BBB
AAA+DDD+BBB+CCC+EEE
AAA+DDD+BBB+EEE+CCC
AAA+DDD+EEE+BBB+CCC
AAA+DDD+EEE+CCC+BBB
AAA+EEE+CCC+DDD+BBB
AAA+EEE+CCC+BBB+DDD
AAA+EEE+DDD+CCC+BBB
AAA+EEE+DDD+BBB+CCC
AAA+EEE+BBB+DDD+CCC
AAA+EEE+BBB+CCC+DDD
BBB+AAA+CCC+DDD+EEE
BBB+AAA+CCC+EEE+DDD
BBB+AAA+DDD+CCC+EEE
BBB+AAA+DDD+EEE+CCC
BBB+AAA+EEE+DDD+CCC
BBB+AAA+EEE+CCC+DDD
BBB+CCC+AAA+DDD+EEE
BBB+CCC+AAA+EEE+DDD
BBB+CCC+DDD+AAA+EEE
BBB+CCC+DDD+EEE+AAA
BBB+CCC+EEE+DDD+AAA
BBB+CCC+EEE+AAA+DDD
BBB+DDD+CCC+AAA+EEE
BBB+DDD+CCC+EEE+AAA
BBB+DDD+AAA+CCC+EEE
BBB+DDD+AAA+EEE+CCC
BBB+DDD+EEE+AAA+CCC
BBB+DDD+EEE+CCC+AAA
BBB+EEE+CCC+DDD+AAA
BBB+EEE+CCC+AAA+DDD
BBB+EEE+DDD+CCC+AAA
BBB+EEE+DDD+AAA+CCC
BBB+EEE+AAA+DDD+CCC
BBB+EEE+AAA+CCC+DDD
CCC+BBB+AAA+DDD+EEE
CCC+BBB+AAA+EEE+DDD
CCC+BBB+DDD+AAA+EEE
CCC+BBB+DDD+EEE+AAA
CCC+BBB+EEE+DDD+AAA
CCC+BBB+EEE+AAA+DDD
CCC+AAA+BBB+DDD+EEE
CCC+AAA+BBB+EEE+DDD
CCC+AAA+DDD+BBB+EEE
CCC+AAA+DDD+EEE+BBB
CCC+AAA+EEE+DDD+BBB
CCC+AAA+EEE+BBB+DDD
CCC+DDD+AAA+BBB+EEE
CCC+DDD+AAA+EEE+BBB
CCC+DDD+BBB+AAA+EEE
CCC+DDD+BBB+EEE+AAA
CCC+DDD+EEE+BBB+AAA
CCC+DDD+EEE+AAA+BBB
CCC+EEE+AAA+DDD+BBB
CCC+EEE+AAA+BBB+DDD
CCC+EEE+DDD+AAA+BBB
CCC+EEE+DDD+BBB+AAA
CCC+EEE+BBB+DDD+AAA
CCC+EEE+BBB+AAA+DDD
DDD+BBB+CCC+AAA+EEE
DDD+BBB+CCC+EEE+AAA
DDD+BBB+AAA+CCC+EEE
DDD+BBB+AAA+EEE+CCC
DDD+BBB+EEE+AAA+CCC
DDD+BBB+EEE+CCC+AAA
DDD+CCC+BBB+AAA+EEE
DDD+CCC+BBB+EEE+AAA
DDD+CCC+AAA+BBB+EEE
DDD+CCC+AAA+EEE+BBB
DDD+CCC+EEE+AAA+BBB
DDD+CCC+EEE+BBB+AAA
DDD+AAA+CCC+BBB+EEE
DDD+AAA+CCC+EEE+BBB
DDD+AAA+BBB+CCC+EEE
DDD+AAA+BBB+EEE+CCC
DDD+AAA+EEE+BBB+CCC
DDD+AAA+EEE+CCC+BBB
DDD+EEE+CCC+AAA+BBB
DDD+EEE+CCC+BBB+AAA
DDD+EEE+AAA+CCC+BBB
DDD+EEE+AAA+BBB+CCC
DDD+EEE+BBB+AAA+CCC
DDD+EEE+BBB+CCC+AAA
EEE+BBB+CCC+DDD+AAA
EEE+BBB+CCC+AAA+DDD
EEE+BBB+DDD+CCC+AAA
EEE+BBB+DDD+AAA+CCC
EEE+BBB+AAA+DDD+CCC
EEE+BBB+AAA+CCC+DDD
EEE+CCC+BBB+DDD+AAA
EEE+CCC+BBB+AAA+DDD
EEE+CCC+DDD+BBB+AAA
EEE+CCC+DDD+AAA+BBB
EEE+CCC+AAA+DDD+BBB
EEE+CCC+AAA+BBB+DDD
EEE+DDD+CCC+BBB+AAA
EEE+DDD+CCC+AAA+BBB
EEE+DDD+BBB+CCC+AAA
EEE+DDD+BBB+AAA+CCC
EEE+DDD+AAA+BBB+CCC
EEE+DDD+AAA+CCC+BBB
EEE+AAA+CCC+DDD+BBB
EEE+AAA+CCC+BBB+DDD
EEE+AAA+DDD+CCC+BBB
EEE+AAA+DDD+BBB+CCC
EEE+AAA+BBB+DDD+CCC
EEE+AAA+BBB+CCC+DDD


Rule should be:

AAA can be permutated with CCC and EEE only
BBB can be permutatated with DDD only..
CCC can be permutated with AAA and EEE only....

Thanks