#include <bits/stdc++.h>
using namespace std;
const int N = 2005;
template <class T>
inline void read(T &x) {
  T f = 1;
  x = 0;
  char s = getchar();
  while (s < '0' || s > '9') {
    if (s == '-') f = -1;
    s = getchar();
  }
  while (s >= '0' && s <= '9') {
    x = x * 10 + s - '0';
    s = getchar();
  }
  x *= f;
}
char s[N], t[N];
int n, ans, st, S[N][26], T[N][26];
int f[N][N];
inline void solve() {
  read(n);
  ans = 0;
  scanf("%s %s", s + 1, t + 1);
  for (int i = (0); i <= (25); i++) S[n + 1][i] = T[n + 1][i] = 0;
  for (int i = (n); i >= (1); i--) {
    for (int j = (0); j <= (25); j++)
      S[i][j] = S[i + 1][j], T[i][j] = T[i + 1][j];
    S[i][s[i] - 'a']++;
    T[i][t[i] - 'a']++;
  }
  for (int i = (0); i <= (25); i++)
    if (S[1][i] != T[1][i]) return (void)(puts("-1"));
  for (int i = (1); i <= (n + 1); i++)
    for (int j = (1); j <= (n + 1); j++) f[i][j] = -1;
  f[n + 1][n + 1] = 0;
  for (int i = (n + 1); i >= (2); i--)
    for (int j = (n + 1); j >= (2); j--) {
      if (f[i][j] >= 0) {
        if (s[i - 1] == t[j - 1])
          f[i - 1][j - 1] = max(f[i - 1][j - 1], 1 + f[i][j]);
        else if (T[j - 1][t[j - 1] - 'a'] <= S[i - 1][t[j - 1] - 'a'])
          f[i][j - 1] = max(f[i][j - 1], f[i][j]);
        f[i - 1][j] = max(f[i - 1][j], f[i][j]);
      } else
        break;
    }
  ans = -1;
  for (int i = (1); i <= (n); i++) ans = max(ans, f[1][i]);
  printf("%d\n", n - ans);
}
int main() {
  int TEST;
  read(TEST);
  while (TEST--) solve();
}
