#nullable enable var c = 26; var ans = new List(); for (var i = 0; i < c - 1; i++) { var c1 = (char)(i + 'A'); ans.Add(new string([c1, c1])); for (var j = i + 1; j < c - 1; j++) { var c2 = (char)(j + 'A'); ans.Add(new string([c1, c2])); ans.Add(new string([c2, c1])); } ans.Add(new string([c1, 'Z'])); var cn = (char)((i + 1) % (c - 1) + 'A'); if (cn == 'A') ans.Add("ZZ"); ans.Add(new string(['Z', cn])); } if (ans.Distinct().Count() != c * c) throw new Exception(); for (var i = 0; i < ans.Count; i++) { var x = ans[i]; var y = ans[(i + 1) % ans.Count]; if (x[1] != y[0]) throw new Exception(); } Console.WriteLine(string.Join(Environment.NewLine, ans));