#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e5 + 5;
string s, t;
int cts[30], ctt[30], n;
int p[2005], q[2005];
vector<int> v;
int find(int x) {
  for (int i = 0; i < n; ++i)
    if (p[i] == x) return i;
}
void rot(int x) {
  v.push_back(x);
  for (int i = 0; i < x; ++i) q[i] = p[n - 1 - i];
  for (int i = x; i < n; ++i) q[i] = p[i - x];
  for (int i = 0; i < n; ++i) p[i] = q[i];
}
int main() {
  cin >> n >> s >> t;
  for (int i = 0; i < n; ++i) {
    cts[s[i] - 'a']++;
    ctt[t[i] - 'a']++;
  }
  for (int i = 0; i < 26; ++i) {
    if (cts[i] != ctt[i]) {
      cout << "-1\n";
      return 0;
    }
  }
  for (int i = 0; i < n; ++i) p[i] = -1;
  for (int i = 0; i < n; ++i) {
    char x = t[i];
    for (int j = 0; j < n; ++j) {
      if (p[j] != -1) continue;
      if (s[j] != x) continue;
      p[j] = i;
      break;
    }
  }
  rot(n - 1 - find(n - 1));
  assert(p[n - 1] == n - 1);
  for (int i = 0; i < n - 1; ++i) {
    if (i % 2 == 0) {
      rot(n - 1 - find(n - 2 - i));
      rot(n - i - 1);
      rot(n - 1);
      rot(1);
    } else {
      rot(n - find(n - 2 - i));
      rot(n - 1 - find(n - 1));
    }
  }
  if (p[n - 1] != n - 1) rot(n);
  cout << v.size() << endl;
  for (int i = 0; i < v.size(); ++i) cout << v[i] << ' ';
  cout << endl;
}
