#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e5 + 5;
const int OFFSET = 2e5 + 3;
int pref[MAXN];
int last[2 * OFFSET];
int last_time[2 * OFFSET];
int test_case_num = 0;
void solve() {
test_case_num++;
int n;
string s;
cin >> n >> s;
char plusChar = s[0];
int totalPlus = 0;
for (int i = 0; i < n; ++i) {
if (s[i] == plusChar) {
totalPlus++;
}
}
int totalMinus = n - totalPlus;
int diff = totalPlus - totalMinus;
if (diff == 0) {
cout << 0 << '\n';
return;
}
pref[0] = 0;
for (int i = 0; i < n; ++i) {
pref[i + 1] = pref[i] + (s[i] == plusChar ? 1 : -1);
}
int ans = n + 1;
for (int i = 0; i <= n; ++i) {
int want = pref[i] - diff;
int want_idx = want + OFFSET;
if (last_time[want_idx] == test_case_num) {
ans = min(ans, i - last[want_idx]);
}
int pref_idx = pref[i] + OFFSET;
last[pref_idx] = i;
last_time[pref_idx] = test_case_num;
}
if (ans > n || ans == n) {
cout << -1 << '\n';
} else {
cout << ans << '\n';
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin >> t;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTUFYTiA9IDJlNSArIDU7CmNvbnN0IGludCBPRkZTRVQgPSAyZTUgKyAzOwoKaW50IHByZWZbTUFYTl07CmludCBsYXN0WzIgKiBPRkZTRVRdOwppbnQgbGFzdF90aW1lWzIgKiBPRkZTRVRdOwppbnQgdGVzdF9jYXNlX251bSA9IDA7Cgp2b2lkIHNvbHZlKCkgewogICAgdGVzdF9jYXNlX251bSsrOwogICAgaW50IG47CiAgICBzdHJpbmcgczsKICAgIGNpbiA+PiBuID4+IHM7CgogICAgY2hhciBwbHVzQ2hhciA9IHNbMF07CiAgICBpbnQgdG90YWxQbHVzID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgaWYgKHNbaV0gPT0gcGx1c0NoYXIpIHsKICAgICAgICAgICAgdG90YWxQbHVzKys7CiAgICAgICAgfQogICAgfQogICAgaW50IHRvdGFsTWludXMgPSBuIC0gdG90YWxQbHVzOwogICAgaW50IGRpZmYgPSB0b3RhbFBsdXMgLSB0b3RhbE1pbnVzOwoKICAgIGlmIChkaWZmID09IDApIHsKICAgICAgICBjb3V0IDw8IDAgPDwgJ1xuJzsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcHJlZlswXSA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgIHByZWZbaSArIDFdID0gcHJlZltpXSArIChzW2ldID09IHBsdXNDaGFyID8gMSA6IC0xKTsKICAgIH0KCiAgICBpbnQgYW5zID0gbiArIDE7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbjsgKytpKSB7CiAgICAgICAgaW50IHdhbnQgPSBwcmVmW2ldIC0gZGlmZjsKICAgICAgICBpbnQgd2FudF9pZHggPSB3YW50ICsgT0ZGU0VUOwogICAgICAgIAogICAgICAgIGlmIChsYXN0X3RpbWVbd2FudF9pZHhdID09IHRlc3RfY2FzZV9udW0pIHsKICAgICAgICAgICAgYW5zID0gbWluKGFucywgaSAtIGxhc3Rbd2FudF9pZHhdKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaW50IHByZWZfaWR4ID0gcHJlZltpXSArIE9GRlNFVDsKICAgICAgICBsYXN0W3ByZWZfaWR4XSA9IGk7CiAgICAgICAgbGFzdF90aW1lW3ByZWZfaWR4XSA9IHRlc3RfY2FzZV9udW07CiAgICB9CgogICAgaWYgKGFucyA+IG4gfHwgYW5zID09IG4pIHsKICAgICAgICBjb3V0IDw8IC0xIDw8ICdcbic7CiAgICB9IGVsc2UgewogICAgICAgIGNvdXQgPDwgYW5zIDw8ICdcbic7CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwoKICAgIGludCB0OwogICAgY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgc29sdmUoKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQ==