using System.Collections.Generic;
public static void Main()
foreach (string[] anagramArray in CalcFunc("top", "read", "act", "dear", "spot", "cat", "dare", "stop"))
Console.WriteLine(string.Join(", ", anagramArray));
static string[][] CalcFunc(params string[] inputArr)
List<HashSet<char>> letterSets = new List<HashSet<char>>();
List<List<string>> result = new List<List<string>>();
foreach (string word in inputArr)
for (int i = 0; i < letterSets.Count; i++)
foreach (char letter in word)
if (!letterSets[i].Contains(char.ToLower(letter)))
HashSet<char> newLetterSet = new HashSet<char>(word.ToArray().AsEnumerable());
letterSets.Add(newLetterSet);
List<string> wordSet = new List<string>(new string[] { word });
return result.Select(word => word.ToArray()).ToArray();