#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==