#include <bits/stdc++.h>
using namespace std;
const int N = 10101;
int n;
int cnt[33];
char s[N], t[N], tmp[N];
vector<int> ans;
bool check() {
  for (int i = (1); i < (n + 1); i++) ++cnt[s[i] - 'a'];
  for (int i = (1); i < (n + 1); i++) --cnt[t[i] - 'a'];
  for (int i = (0); i < (33); i++)
    if (cnt[i] < 0) return 0;
  return 1;
}
void upd(int &x, int c) {
  if (x <= n - c) {
    x += c;
  } else {
    x = n - x + 1;
  }
}
void gao(int &l, int &r, int &x, bool &rev, int c) {
  ans.push_back(c);
  if (l >= n - c + 1) rev ^= 1;
  int j = 0;
  for (int i = n; i >= n - c + 1; --i) tmp[++j] = s[i];
  for (int i = (1); i < (n - c + 1); i++) tmp[++j] = s[i];
  for (int i = (1); i < (n + 1); i++) s[i] = tmp[i];
  upd(l, c);
  upd(r, c);
  upd(x, c);
  if (l > r) swap(l, r);
}
void solve() {
  int l, r;
  for (int i = (1); i < (n + 1); i++)
    if (s[i] == t[1]) {
      l = r = i;
      break;
    }
  bool rev = 0;
  for (int i = (2); i < (n + 1); i++) {
    int x;
    for (int j = (1); j < (n + 1); j++)
      if (j < l || r < j) {
        if (s[j] == t[i]) {
          x = j;
          break;
        }
      }
    if (x < l) {
      if (rev) {
        gao(l, r, x, rev, n - x);
        gao(l, r, x, rev, n - l + 1);
        gao(l, r, x, rev, n - l + 1);
        ++r;
      } else {
        gao(l, r, x, rev, n - r);
        gao(l, r, x, rev, n - x + 1);
        gao(l, r, x, rev, n - x + 1);
        --l;
      }
    } else {
      if (rev) {
        gao(l, r, x, rev, n - x);
        gao(l, r, x, rev, n - r);
        gao(l, r, x, rev, n - l + 1);
        ++r;
      } else {
        gao(l, r, x, rev, n - x);
        gao(l, r, x, rev, n - l + 1);
        gao(l, r, x, rev, n - l + 1);
        ++r;
      }
    }
  }
  if (rev) {
    ans.push_back(n);
    for (int i = 1; i < n - i + 1; ++i) swap(s[i], s[n - i + 1]);
  }
}
int main() {
  while (~scanf("%d%s%s", &n, s + 1, t + 1)) {
    memset(cnt, 0, sizeof(cnt));
    ans.clear();
    if (check()) {
      solve();
      printf("%d\n", (int)ans.size());
      for (int i = (0); i < ((int)ans.size()); i++)
        printf("%d%c", ans[i], " \n"[i == (int)ans.size() - 1]);
    } else {
      puts("-1");
    }
  }
  return 0;
}
