#include <bits/stdc++.h>
#include <chrono>
using namespace std;
using namespace chrono;
using ll = long long;
using ull = unsigned long long;
using ld = double;
using vll = vector<ll>;
constexpr ll INF = 4e18;
constexpr ld EPS = 1e-9;
constexpr ll MOD = 1e9 + 7;
#define F first
#define S second
#define all(x) begin(x), end(x)
#define allr(x) rbegin(x), rend(x)
#define py cout<<"YES\n";
#define pn cout<<"NO\n";
#define forn(i, l, r) for (int i = (l); i <= (r); i++)
#define insert push_back
#define pb push_back
#define MP make_pair
#define endl '\n'
void AJNJ(){
string s , t;
cin >> s;
t = s;
ll n = s.size();
sort(all(t));
if(t == s){
cout << "0" << endl;
return;
}
if(s[0]==t[0] || s[n-1]==t[n-1]){
cout<<"1"<<endl;
}
else if(s[0]==t[n-1] || s[n-1]==t[0]){
cout<<"3"<<endl;
}
else{
cout<<"2"<<endl;
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int T = 1;
cin>>T;
auto start1 = high_resolution_clock::now();
while(T--){
AJNJ();
}
auto stop1 = high_resolution_clock::now();
auto duration = duration_cast<microseconds>(stop1 - start1);
cerr << "Time: " << duration . count() / 1000 << " ms" << endl;
return 0;
}
ICAgICNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgogICAgI2luY2x1ZGUgPGNocm9ubz4KICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAgICB1c2luZyBuYW1lc3BhY2UgY2hyb25vOwogICAgCiAgICAKICAgIHVzaW5nIGxsID0gbG9uZyBsb25nOwogICAgdXNpbmcgdWxsID0gdW5zaWduZWQgbG9uZyBsb25nOwogICAgdXNpbmcgbGQgPSBkb3VibGU7CiAgICB1c2luZyB2bGwgPSB2ZWN0b3I8bGw+OwogICAgCiAgICBjb25zdGV4cHIgbGwgSU5GID0gNGUxODsKICAgIGNvbnN0ZXhwciBsZCBFUFMgPSAxZS05OwogICAgY29uc3RleHByIGxsIE1PRCA9IDFlOSArIDc7CgogICAgI2RlZmluZSBGIGZpcnN0CiAgICAjZGVmaW5lIFMgc2Vjb25kCiAgICAjZGVmaW5lIGFsbCh4KSBiZWdpbih4KSwgZW5kKHgpCiAgICAjZGVmaW5lIGFsbHIoeCkgcmJlZ2luKHgpLCByZW5kKHgpCiAgICAjZGVmaW5lIHB5IGNvdXQ8PCJZRVNcbiI7CiAgICAjZGVmaW5lIHBuIGNvdXQ8PCJOT1xuIjsKICAgICNkZWZpbmUgZm9ybihpLCBsLCByKSBmb3IgKGludCBpID0gKGwpOyBpIDw9IChyKTsgaSsrKQoKICAgICNkZWZpbmUgaW5zZXJ0IHB1c2hfYmFjawogICAgI2RlZmluZSBwYiBwdXNoX2JhY2sKICAgICNkZWZpbmUgTVAgbWFrZV9wYWlyCiAgICAjZGVmaW5lIGVuZGwgJ1xuJwoKICAgIAogICAgdm9pZCBBSk5KKCl7CiAgICAgICBzdHJpbmcgcyAsIHQ7CiAgICAgICBjaW4gPj4gczsKICAgICAgIHQgPSBzOwogICAgICAgbGwgbiA9IHMuc2l6ZSgpOwogICAgICAgc29ydChhbGwodCkpOwogICAgICAgaWYodCA9PSBzKXsKICAgICAgICAgIGNvdXQgPDwgIjAiIDw8IGVuZGw7CiAgICAgICAgICByZXR1cm47CiAgICAgICB9CiAgICAgICBpZihzWzBdPT10WzBdIHx8IHNbbi0xXT09dFtuLTFdKXsKICAgICAgICAgICBjb3V0PDwiMSI8PGVuZGw7CiAgICAgICB9CiAgICAgICBlbHNlIGlmKHNbMF09PXRbbi0xXSB8fCBzW24tMV09PXRbMF0pewogICAgICAgICAgY291dDw8IjMiPDxlbmRsOwogICAgICAgfQogICAgICAgZWxzZXsKICAgICAgICAgIGNvdXQ8PCIyIjw8ZW5kbDsKICAgICAgIH0KICAgIH0KCiAgICAKICAgIGludCBtYWluKCl7CiAgICAgICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICAgICAgY2luLnRpZSgwKTsKICAgICAgICBjb3V0LnRpZSgwKTsKICAgICAgICBpbnQgVCA9IDE7CiAgICAgICAgY2luPj5UOwogICAgICAgIGF1dG8gc3RhcnQxID0gaGlnaF9yZXNvbHV0aW9uX2Nsb2NrOjpub3coKTsKICAgICAgICB3aGlsZShULS0pewogICAgICAgICAgICBBSk5KKCk7CiAgICAgICAgfQogICAgICAgIGF1dG8gc3RvcDEgPSBoaWdoX3Jlc29sdXRpb25fY2xvY2s6Om5vdygpOwogICAgICAgIGF1dG8gZHVyYXRpb24gPSBkdXJhdGlvbl9jYXN0PG1pY3Jvc2Vjb25kcz4oc3RvcDEgLSBzdGFydDEpOwogICAgICAgIGNlcnIgPDwgIlRpbWU6ICIgPDwgZHVyYXRpb24gLiBjb3VudCgpIC8gMTAwMCA8PCAiIG1zIiA8PCBlbmRsOwogICAgCiAgICAgICAgcmV0dXJuIDA7CiAgICB9