#include <bits/stdc++.h>
using namespace std;
const long long INF = 2e12 + 9;
const int MAXN = 1e6 + 7;
const long long MOD = 1e9 + 7;
const long long ST = 157;
const long long ST1 = 199;
const double EPS = 1e-9;
const int BLOCK = 138;
void solve();
signed main() {
  srand('a' + 'l' + 'e' + 'x' + 'X' + '5' + '1' + '2');
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  solve();
}
void f(string &s, int x) {
  string sr = s.substr(s.size() - x, x);
  reverse(sr.begin(), sr.end());
  s = sr + s.substr(0, s.size() - x);
}
int fi(string &s, char ch, int len) {
  for (int i = 0; i < s.size() - len; i++) {
    if (s[i] == ch) {
      return i;
    }
  }
  return -1;
}
void solve() {
  int n, m;
  string now, t;
  cin >> n >> now >> t;
  vector<int> ans;
  int len = 0;
  int k = fi(now, t[0], len);
  if (k == -1) {
    cout << -1;
    return;
  }
  ans.push_back(now.size() - k - 1);
  f(now, ans.back());
  len = 1;
  for (int i = 1; i < now.size(); i++) {
    k = fi(now, t[i], len);
    if (k == -1) {
      cout << -1;
      return;
    }
    ans.push_back(now.size() - k - 1);
    f(now, ans.back());
    ans.push_back(1);
    f(now, ans.back());
    ans.push_back(now.size());
    f(now, ans.back());
    len++;
  }
  cout << ans.size() << "\n";
  for (int i = 0; i < ans.size(); i++) {
    cout << ans[i] << " ";
  }
}
