using System.Collections.Generic;
public static void Main()
string[] test1 = { "aba", "bbb", "bab" };
string[] test2 = { "q", "q" };
string[] test4 = {"zzzzab", "zzzzbb", "zzzzaa"};
string[] test6 = { "abc", "bef", "bcc", "bec", "bbc", "bdc" };
string[] test8 = {"abc", "abx", "axx", "abx", "abc"};
c.stringsRearrangement(test1);
c.stringsRearrangement(test2);
c.stringsRearrangement(test4);
c.stringsRearrangement(test6);
string[] strs = { "abc", "abx" };
int[][] numnums = c.makeInts(strs);
Console.WriteLine(c.compare(numnums[0], numnums[1]));
public bool stringsRearrangement(string[] inputArray) {
int[][] nums = new int[inputArray.Length][];
for(int i = 0; i < inputArray.Length; i++)
nums[i] = new int[inputArray[i].Length];
for(int j = 0; j < inputArray[i].Length; j++)
{nums[i][j] = Char.ConvertToUtf32(inputArray[i],j);}
List<string> tempArray = new List<string>();
for(int i = 0; i < nums.Length; i++)
if(i + 1 < nums.Length && compare(nums[i], nums[i+1]))
{ tempArray.Add(inputArray[i]); }
else if(i-1 >= 0 && compare(nums[i], nums[i-1]) || i + 1 < nums.Length && compare(nums[i], nums[i+1]))
{tempArray.Add(inputArray[i]);}
else if(i+1 >= nums.Length && compare(nums[i], nums[0]))
{ tempArray.Insert(0, inputArray[i]); }
foreach(var v in tempArray)
{ Console.Write("{0} ", v); }
public bool compare(int[] num1, int[] num2)
for(int i = 0; i < num1.Length; i++)
if(dif > 1 || same == num1.Length)
public int[][] makeInts(string[] inputArray)
int[][] nums = new int[inputArray.Length][];
for(int i = 0; i < inputArray.Length; i++)
nums[i] = new int[inputArray[i].Length];
for(int j = 0; j < inputArray[i].Length; j++)
{nums[i][j] = Char.ConvertToUtf32(inputArray[i],j);}