#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define MAX 100010 #define X first #define Y second using namespace std; typedef long long i64; typedef pair Pii; Pii it[MAX]; bool vis[MAX]; int Calc(int x) { int ret = 0; for (int i = x; !vis[i]; i = it[i].Y) { ++ret; vis[i] = true; } return ret; } int Solve(int n) { memset(vis, 0, sizeof(vis)); sort(it + 1, it + n + 1); int ret = 0; for (int i = 1; i <= n; ++i) { if (!vis[i]) { int cur = Calc(i); ret += (cur == 1 ? 1 : cur - 1); } } return ret; } int main() { int t, n; scanf("%d", &t); while (t--) { scanf("%d", &n); for (int i = 1; i <= n; ++i) scanf("%d", &it[i].X); for (int i = 1; i <= n; ++i) scanf("%d", &it[i].Y); printf("%d\n", Solve(n)); } return 0; }