#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:66777216")
using namespace std;
template <typename A, typename B>
istream& operator>>(istream& fin, pair<A, B>& p) {
  fin >> p.first >> p.second;
  return fin;
}
template <typename A>
istream& operator>>(istream& fin, vector<A>& v) {
  int n = ((int)(v.size()));
  for (int i = 0; i < n; ++i) fin >> v[i];
  return fin;
}
string sht(const string& s, const int& k, vector<int>& v) {
  int n = ((int)(s.size()));
  v.push_back(k);
  string ans = s;
  for (int i = 0; i < k; ++i) ans[i] = s[n - 1 - i];
  for (int i = k; i < n; ++i) ans[i] = s[i - k];
  return ans;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n;
  cin >> n;
  string s, t;
  getline(cin, s);
  getline(cin, s);
  getline(cin, t);
  string ss = s, tt = t;
  sort(ss.begin(), ss.end());
  sort(tt.begin(), tt.end());
  if (ss != tt)
    cout << "-1\n";
  else {
    int r = 0;
    vector<int> ans;
    bool start = true;
    while (r < n) {
      if (start) {
        int f;
        char a = t[r];
        for (f = r; s[f] != a; ++f)
          ;
        s = sht(s, n - f, ans);
        s = sht(s, f + 1, ans);
        s = sht(s, n - f - 1, ans);
        start = false;
        ++r;
      } else {
        int f;
        char a = t[r];
        for (f = n - 1 - r; s[f] != a; --f)
          ;
        s = sht(s, n - f - 1, ans);
        s = sht(s, 1, ans);
        start = true;
        ++r;
      }
    }
    if (start) s = sht(s, n, ans);
    cout << ((int)(ans.size())) << '\n';
    for (int i = 0; i < ((int)(ans.size())); ++i) cout << ans[i] << ' ';
    cout << '\n';
  }
  return 0;
}
