#include <bits/stdc++.h>
using std::deque;
using std::make_pair;
using std::map;
using std::max;
using std::min;
using std::pair;
using std::set;
using std::string;
using std::vector;
int bc(unsigned long long x) {
  int res = 0;
  while (x) {
    if (x & 1) ++res;
    x /= 2;
  }
  return res;
}
int calc(pair<unsigned long long, unsigned long long> aa,
         pair<unsigned long long, unsigned long long> bb) {
  return bc(aa.first | bb.first) + bc(aa.second + bb.second);
}
vector<int> res;
void sw(int x, int y) { res.push_back(x + 1); }
int main() {
  int n;
  string s1, s2;
  std::cin >> n >> s1 >> s2;
  vector<int> v1(255, 0), v2(255, 0);
  for (auto x : s1) ++v1[x];
  for (auto x : s2) ++v2[x];
  if (v1 != v2) {
    std::cout << -1 << std::endl;
    return 0;
  }
  for (int i = 0; i < n; ++i) {
    int idx = s1.find(s2[i], i);
    for (; idx > i; --idx) {
      sw(idx - 1, idx);
      std::swap(s1[idx - 1], s1[idx]);
    }
  }
  std::cout << res.size() << std::endl;
  for (auto x : res) {
    std::cout << x << " ";
  }
  return 0;
}
