#include <bits/stdc++.h>
using namespace std;
string s, t;
int n;
multiset<int> sa, sb;
vector<int> ans;
void sov() {
  for (int i = 0; i < n; i++) {
    for (int j = i; j < n; j++) {
      if (s[j] == t[n - 1 - i]) {
        string A = s.substr(0, j);
        string B = s.substr(j + 1, n - 1 - j);
        string ch = t.substr(n - 1 - i, 1);
        reverse(B.begin(), B.end());
        s = ch + A + B;
        ans.push_back(n);
        ans.push_back(j);
        ans.push_back(1);
        break;
      }
    }
  }
  int sz = ans.size();
  printf("%d\n", sz);
  for (int i = 0; i < sz; i++) printf(i == sz - 1 ? "%d\n" : "%d ", ans[i]);
}
int main() {
  cin >> n >> s >> t;
  for (int i = 0; i < n; i++) {
    sa.insert(s[i]);
    sb.insert(t[i]);
  }
  bool flag = true;
  if (sa != sb) flag = false;
  if (!flag) {
    printf("-1\n");
    return 0;
  }
  sov();
  return 0;
}
