#include <bits/stdc++.h>
using namespace std;
const int N = 2005, M = 6105;
int num1[27], num2[27];
char st[N], ed[N];
char p[N];
int ans;
int n, r, num;
int op[M];
void rev(int x) {
  if (x > n) return;
  int q = n - x + 1;
  op[++ans] = q;
  for (int i = n; i >= x; --i) p[n - i + 1] = st[i];
  for (int i = n; i > q; --i) st[i] = st[i - q];
  for (int i = 1; i <= q; ++i) st[i] = p[i];
}
int main() {
  scanf("%d", &n);
  scanf("%s", st + 1);
  scanf("%s", ed + 1);
  for (int i = 1; i <= n; ++i) num1[st[i] - 'a']++, num2[ed[i] - 'a']++;
  for (int i = 0; i <= 26; ++i)
    if (num1[i] != num2[i]) {
      puts("-1");
      return 0;
    }
  if (n == 1) {
    printf("0\n");
    puts("");
    return 0;
  }
  int x;
  r = n;
  num = 0;
  while (r > 1) {
    rev(num + 1);
    for (x = n - num; x >= 1; --x)
      if (st[x] == ed[r]) break;
    rev(x + 1);
    --r;
    ++num;
    rev(n);
    for (x = n; x >= 1; --x)
      if (st[x] == ed[r]) break;
    rev(x);
    rev(n - x + 1 + num + 1);
    --r;
    ++num;
    rev(n - num + 1);
  }
  rev(1);
  printf("%d\n", ans);
  for (int i = 1; i <= ans; ++i) printf("%d ", op[i]);
  puts("");
  return 0;
}
