#include <bits/stdc++.h>
#pragma warning(disable : 4996)
FILE *in = stdin, *out = stdout;
using namespace std;
int n, ans[100005], N;
int alpha[30];
char a[2005], b[2005], c[2005];
void input() {
  fscanf(in, "%d", &n);
  fscanf(in, "%s", &a[1]);
  fscanf(in, "%s", &b[1]);
}
int most_fit(int start) {
  for (int i = (start); i <= (n); i++)
    if (a[i] == b[start]) return i;
  return 0;
}
void method1(int l, int r) {
  ans[++N] = r;
  ans[++N] = l;
  ans[++N] = r;
  for (int i = (1); i <= (r); i++) c[i] = a[l + i];
  int t = l;
  for (int i = (r + 1); i <= (n); i++) c[i] = a[t--];
  for (int i = (1); i <= (n); i++) a[i] = c[i];
}
void method2(int A, int B, int C) {
  ans[++N] = C;
  ans[++N] = A + B;
  ans[++N] = C;
  ans[++N] = A;
  for (int i = (A + 1); i <= (A + C); i++) c[i] = a[i + B];
  int t = A + B;
  for (int i = (A + C + 1); i <= (n); i++) c[i] = a[t--];
  for (int i = (A + 1); i <= (n); i++) a[i] = c[i];
}
void pro() {
  for (int i = (1); i <= (n); i++) alpha[a[i] - 'a']++, alpha[b[i] - 'a']--;
  for (int i = (0); i <= (25); i++)
    if (alpha[i] != 0) {
      fprintf(out, "-1");
      return;
    }
  for (int i = (1); i <= (n); i++) {
    for (int j = (i); j <= (n); j++) {
      if (a[j] == b[n - i + 1]) {
        ans[++N] = n;
        ans[++N] = j - 1;
        ans[++N] = 1;
        c[1] = a[j];
        for (int k = (2); k <= (j); k++) c[k] = a[k - 1];
        int t = n;
        for (int k = (j + 1); k <= (n); k++) c[k] = a[t--];
        for (int k = (1); k <= (n); k++) a[k] = c[k];
        break;
      }
    }
  }
  fprintf(out, "%d\n", N);
  for (int i = (1); i <= (N); i++) {
    fprintf(out, "%d ", ans[i]);
  }
}
int main() {
  input();
  pro();
  return 0;
}
