#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
string a;
string s;
long long n;
long long C;
vector<long long> pas;
void go(long long x) {
  string b = "";
  for (int i = n - 1; i > n - 1 - x; i--) b += s[i];
  for (int i = 0; i < n - x; i++) b += s[i];
  s = b;
}
void doit(long long x) {
  pas.push_back(n - x);
  go(n - x);
  pas.push_back(n);
  go(n);
  pas.push_back(n - x - 1);
  go(n - x - 1);
}
long long l, r;
void add(char c) {
  for (int i = l; i < n - r; i++) {
    if (s[i] == c) {
      doit(i);
      C++;
      return;
    }
  }
  cout << -1;
  exit(0);
}
int main() {
  cin >> n;
  cin >> s >> a;
  l = 0;
  r = 0;
  long long k, p;
  k = 0;
  p = 1;
  long long m = n / 2 - 1;
  for (int i = 0; i < n; i++) {
    if ((n - i + 1) & 1) {
      add(a[m - k]);
      k++;
    } else {
      add(a[m + p]);
      p++;
    }
    swap(l, r);
    r++;
  }
  if (s != a) {
    go(n);
    pas.push_back(n);
  }
  cout << pas.size() << endl;
  for (auto x : pas) {
    cout << x << " ";
  }
}
