#include <bits/stdc++.h>
using namespace std;
vector<int> res;
string s1, s2;
int ct[26], idx0, idx1, len;
bool rev;
void proc(int& addidx, int x) {
  res.push_back(x);
  string beta = s1.substr(len - x);
  reverse(beta.begin(), beta.end());
  s1 = beta + s1.substr(0, len - x);
  int idx = len - x;
  if (idx0 >= idx) {
    swap(idx0, idx1);
    idx0 = len - idx0;
    idx1 = len - idx1;
    rev = !rev;
  } else {
    idx0 += x;
    idx1 += x;
  }
  if (addidx >= idx)
    addidx = len - addidx;
  else
    addidx += x;
}
int main() {
  cin >> len >> s1 >> s2;
  for (char c : s1) ct[c - 'a']++;
  for (char c : s2) ct[c - 'a']--;
  for (int c : ct)
    if (c != 0) {
      cout << "-1\n";
      return 0;
    }
  for (int i = 0; i < len; i++)
    if (s1[i] == s2[0]) {
      int tmp = 0;
      proc(tmp, len - i - 1);
      proc(tmp, 1);
      break;
    }
  idx0 = 0;
  idx1 = 1;
  while (idx1 - idx0 < len) {
    int addidx = 0;
    for (; addidx < len; addidx++) {
      if (s1[addidx] == s2[idx1 - idx0] && (addidx < idx0 || addidx >= idx1))
        break;
    }
    if (rev && addidx < idx0) {
      proc(addidx, len - idx1);
      proc(addidx, len - addidx);
      proc(addidx, len - addidx);
      idx0--;
    } else if (!rev && addidx < idx0) {
      proc(addidx, len - addidx - 1);
      proc(addidx, len - idx1);
      proc(addidx, len - idx0);
      idx1++;
    } else if (rev && addidx >= idx1) {
      proc(addidx, len - addidx - 1);
      proc(addidx, len - idx1);
      proc(addidx, idx1 - idx0);
      idx1++;
    } else {
      proc(addidx, len - addidx - 1);
      proc(addidx, len - idx0);
      proc(addidx, len - idx0);
      idx1++;
    }
  }
  if (rev) res.push_back(len);
  cout << res.size() << '\n';
  for (int r : res) cout << r << ' ';
}
