static object Solve() { var n = int.Parse(Console.ReadLine()); var s0 = Console.ReadLine().Select(c => c == 'B').ToArray(); var t = Console.ReadLine().Select(c => c == 'B').ToArray(); var s = new IndexedList <bool>(); foreach (var v in s0) { s.Add(v); } var r = 0L; // 先行インデックス var q = 0; for (int i = 0; i < n; i++) { var v = s[i]; if (v == t[i]) { continue; } if (i == n - 1) { return(-1); } q = Math.Max(q, i); while (q + 1 < n && s[q] != s[q + 1]) { q++; } if (q == n - 1) { return(-1); } r += q - i + 1; s.RemoveAt(q); s.RemoveAt(q); s.Insert(i, !v); s.Insert(i, !v); } if (!s.SequenceEqual(t)) { throw new InvalidOperationException(); } return(r); }