#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#pragma GCC optimize("unroll-loops")

#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;

#define DEBUG
#ifdef DEBUG
#define debug(...) __f(#__VA_ARGS__, __VA_ARGS__)
	template <typename Arg1>
	void __f(const char* name, Arg1&& arg1)
	{
		cerr << name << " = " << arg1 << endl;
	}
	template <typename Arg1, typename... Args>
	void __f(const char* names, Arg1&& arg1, Args&&... args)
	{
		const char* comma = strchr(names + 1, ','); cerr.write(names, comma - names) << " = " << arg1 << " || ";
		__f(comma+1, args...);
	}
#else
#define debug(...)
#endif

#define FAST_IO std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define ll long long int
#define pb push_back
#define mp make_pair
#define ld long double
#define sz(a) (ll)(a).size()
#define endl "\n"

// priority_queue<ll, vector<ll>, less<ll>>pq;     // Max Heap
// priority_queue<ll, vector<ll>, greater<ll>>pq;  // Min Heap

typedef tree<ll,null_type,less<ll>,rb_tree_tag,tree_order_statistics_node_update> ordered_set;
//K-th smallest
//cout << k << "kth (1 based indexing) smallest: " << *A.find_by_order(k - 1) << endl;
//NO OF ELEMENTS < X
//cout << "No of elements less than " << X << " are " << A.order_of_key(X) << endl;

const int MAXN = 2e5 + 5;

vector<ll>adj[MAXN];

int main()
{
	FAST_IO;

 	ll t;
 	cin >> t;
 	while(t--)
 	{
 		ll n, ans = 1e18;
 		cin >> n;
 		ll a[n];
 		for(int i=0;i<n;i++) adj[i].clear();
 		for(int i=0;i<n;i++) cin >> a[i], adj[a[i]].pb(i);
 		for(int i=1;i<=n;i++)
 		{
 			if(sz(adj[i]) < 2) continue;
 			for(int j=0;j<sz(adj[i]) - 1;j++) ans = min(ans, adj[i][j + 1] - adj[i][j] + 1);
 		}
 		if(ans == 1e18) cout << -1 << endl;
 		else cout << ans << endl;
 	}   
    return 0;
}