#include <bits/stdc++.h>
using namespace std;
const int MX = 2005;
int n, mem[MX][MX], as[MX][256], at[MX][256];
string s, t, _s, _t;
int dp(int i, int j) {
  if (i > j) return 0;
  if (i == n || j == n) return 0;
  int &res = mem[i][j];
  if (res != -1) return res;
  res = 0;
  if (s[i] == t[j]) res = max(res, dp(i + 1, j + 1) + 1);
  if (as[i + 1][s[i]] >= at[j][s[i]]) res = max(res, dp(i + 1, j));
  if (as[i + 1][t[j]] >= at[j][t[j]]) res = max(res, dp(i, j + 1));
  return res;
}
void solve() {
  cin >> n >> s >> t;
  _s = s;
  _t = t;
  sort(_s.begin(), _s.end());
  sort(_t.begin(), _t.end());
  if (_s != _t) {
    cout << -1 << endl;
    return;
  }
  memset(as[n], 0, sizeof(as[n]));
  for (int i = n - 1; i >= 0; i--) {
    for (int j = 'a'; j <= 'z'; j++) as[i][j] = as[i + 1][j];
    as[i][s[i]]++;
  }
  memset(at[n], 0, sizeof(at[n]));
  for (int i = n - 1; i >= 0; i--) {
    for (int j = 'a'; j <= 'z'; j++) at[i][j] = at[i + 1][j];
    at[i][t[i]]++;
  }
  for (int i = 0; i < (n + 1); i++)
    for (int j = 0; j < (n + 1); j++) mem[i][j] = -1;
  cout << n - dp(0, 0) << endl;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int t;
  cin >> t;
  while (t--) solve();
  return 0;
}
