#include <bits/stdc++.h>
using namespace std;
void err() {
  puts("-1");
  exit(0);
}
const int maxN = 2048;
vector<int> pos[maxN];
vector<int> ans;
char s[maxN];
char t[maxN];
vector<int> _p;
vector<int> p;
int n;
void do_perm() {
  p.resize(n);
  _p.resize(n);
  for (int i = 0; i < n; ++i) pos[t[i]].push_back(i);
  for (int i = 0; i < n; ++i) {
    if (pos[s[i]].empty()) err();
    p[i] = pos[s[i]].back();
    pos[s[i]].pop_back();
  }
}
void print() {
  for (int a : p) printf("%d ", a);
  puts("");
}
void do_move(int x) {
  if (x == 0) return;
  ans.push_back(x);
  for (int i = 0; i < n - x; ++i) _p[i + x] = p[i];
  for (int i = 0; i < x; ++i) _p[i] = p[n - i - 1];
  _p.swap(p);
}
void init() {
  for (int i = 0; i < n; ++i)
    if (p[i] == 0) {
      do_move(n - i - 1);
      return;
    }
}
void foo(int x) {
  for (int i = 0; i < n; ++i) {
    if (p[i] == x) {
      do_move(n - i - 1);
      do_move(1);
      do_move(n);
      return;
    }
  }
}
int main() {
  scanf("%d%s%s", &n, s, t);
  do_perm();
  init();
  for (int i = 1; i <= n - 1; ++i) {
    foo(i);
  }
  printf("%d\n", (int)ans.size());
  for (int a : ans) printf("%d ", a);
  puts("");
}
