#include <bits/stdc++.h>
std::string s, t;
int n, cnts[27], cntt[27], opt[6105], sz;
void zhouakngyang(int pos) {
  opt[++sz] = pos;
  std::string tmpl = s.substr(0, n - pos), tmpr = s.substr(n - pos, pos);
  std::reverse(tmpr.begin(), tmpr.end());
  s = tmpr + tmpl;
}
int main() {
  std::ios::sync_with_stdio(0);
  std::cin >> n >> s >> t;
  for (int i = 0, iend = n - 1; i <= iend; ++i)
    ++cnts[s[i] - 'a'], ++cntt[t[i] - 'a'];
  for (int i = 0, iend = 'z' - 'a'; i <= iend; ++i)
    if (cnts[i] != cntt[i]) return puts("-1"), 0;
  for (int i = 0, iend = n - 1; i <= iend; ++i) {
    int pos = -1;
    for (int j = i, jend = n - 1; j <= jend; ++j)
      if (t[i] == s[j]) {
        pos = j;
        break;
      }
    if (!~pos) return puts("-1"), 0;
    zhouakngyang(n), zhouakngyang(pos), zhouakngyang(1);
  }
  zhouakngyang(n);
  assert(sz <= 6100);
  for (int i = 0, iend = n - 1; i <= iend; ++i) assert(s[i] == t[i]);
  std::cout << sz << '\n';
  for (int i = 1, iend = sz; i <= iend; ++i) std::cout << opt[i] << ' ';
  std::cout << '\n';
  return 0;
}
