public class Program { public static void Main() { int num = int.Parse(Console.ReadLine() ?? string.Empty); int num2 = int.Parse(Console.ReadLine() ?? string.Empty); string[] str = (Console.ReadLine() ?? string.Empty).Trim().Split(' '); //string str = Console.ReadLine() ?? string.Empty; List list = []; AB(num, list, "",str); int count = 0; for (int i = 0; i < list.Count; i++) { for (int j = 0; j < str.Length; j++) { if (list[i].LastIndexOf(str[j]) == num - 3) { count++; } } } Console.WriteLine(count); } static void AB(int length, List list, string str, string[] moji) { if (str.Length == length) { for (int i = 0; i < moji.Length; i++) { if(str.LastIndexOf(moji[i]) == length-3) { list.Add(str); } } return; } char[] ab = ['A', 'B']; string dna = str; for (int i = 0; i < ab.Length; i++) { //dna += ab[i]; //修正 AB(length, list, dna + ab[i],moji); } } }