#include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; int main() { int N;cin >> N; string S, T;cin >> S >> T; vector A(N), B(N); for (int i = 0;i < N;i++) { A[i] = S[i] - 'A'; B[i] = T[i] - 'A'; } if (A[0] != B[0] or A.back() != B.back()) { cout << -1 << endl; return 0; } vector X1(N), Y1(N); for (int i = 0;i < N-1;i++) { X1[i] = A[i] ^ A[i + 1]; Y1[i] = B[i] ^ B[i + 1]; } vector X(N), Y(N); for (int i = 0;i < N-1;i++) { if (i%2 == 0) { X[i] = 1 - X1[i]; Y[i] = 1 - Y1[i]; } else { X[i] = X1[i]; Y[i] = Y1[i]; } } queue que; for (int i = 0;i < N-1;i++) if (Y[i] == 1) que.push(i); ll res = 0; for (int i = 0;i < N;i++) { if (X[i] == 1) { if (que.empty()) { cout << -1 << endl; return 0; } int id = que.front(); que.pop(); res += abs(id - i); } } if (!que.empty()) { cout << -1 << endl; return 0; } cout << res << endl; }