#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool CheckPalindrome(string& str, int size) {
for (int i = 0; i < size / 2; i++) {
if (str[i] != str[size - (i + 1)]) {
return false;
}
}
return true;
}
int main() {
int T = 0;
vector<string> Strs;
vector<int> Ans;
char tmp[2] = "";
bool sw = false;
cin >> T;
cin.ignore();
for (int i = 0; i < T; i++) {
string input;
getline(cin, input);
Strs.push_back(input);
}
for (int i = 0; i < T; i++) {
int size = Strs[i].size();
if (CheckPalindrome(Strs[i], size)) {
Ans.push_back(0);
continue;
}
size_t pos = 0;
while(pos < size) {
tmp[0] = Strs[i][pos];
if (CheckPalindrome(Strs[i].erase(pos, 1), size - 1)) {
Ans.push_back(1);
sw = true;
break;
}
Strs[i].insert(pos, tmp);
pos += 1;
}
if (sw) {
sw = false;
continue;
}
Ans.push_back(2);
}
for (int i = 0; i < T; i++) {
cout << Ans[i] << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpib29sIENoZWNrUGFsaW5kcm9tZShzdHJpbmcmIHN0ciwgaW50IHNpemUpIHsKCWZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZSAvIDI7IGkrKykgewoJCWlmIChzdHJbaV0gIT0gc3RyW3NpemUgLSAoaSArIDEpXSkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJfQoJcmV0dXJuIHRydWU7CQp9CgogCmludCBtYWluKCkgewoJaW50IFQgPSAwOwoJdmVjdG9yPHN0cmluZz4gU3RyczsKCXZlY3RvcjxpbnQ+IEFuczsKCWNoYXIgdG1wWzJdID0gIiI7Cglib29sIHN3ID0gZmFsc2U7CiAKICAgIGNpbiA+PiBUOwogCiAgICBjaW4uaWdub3JlKCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IFQ7IGkrKykgewogICAgICAgIHN0cmluZyBpbnB1dDsKICAgICAgICBnZXRsaW5lKGNpbiwgaW5wdXQpOwogICAgICAgIFN0cnMucHVzaF9iYWNrKGlucHV0KTsKICAgIH0KCQoJZm9yIChpbnQgaSA9IDA7IGkgPCBUOyBpKyspIHsKCQlpbnQgc2l6ZSA9IFN0cnNbaV0uc2l6ZSgpOwoJCWlmIChDaGVja1BhbGluZHJvbWUoU3Ryc1tpXSwgc2l6ZSkpIHsKCQkJQW5zLnB1c2hfYmFjaygwKTsKCQkJY29udGludWU7CgkJfQoJCQoJCXNpemVfdCBwb3MgPSAwOwoJCXdoaWxlKHBvcyA8IHNpemUpIHsKCQkJdG1wWzBdID0gU3Ryc1tpXVtwb3NdOwoJCQlpZiAoQ2hlY2tQYWxpbmRyb21lKFN0cnNbaV0uZXJhc2UocG9zLCAxKSwgc2l6ZSAtIDEpKSB7CgkJCQlBbnMucHVzaF9iYWNrKDEpOwoJCQkJc3cgPSB0cnVlOwoJCQkJYnJlYWs7CgkJCX0KCQkJU3Ryc1tpXS5pbnNlcnQocG9zLCB0bXApOwoJCQlwb3MgKz0gMTsKCQl9CgkJaWYgKHN3KSB7CgkJCXN3ID0gZmFsc2U7CgkJCWNvbnRpbnVlOwoJCX0KCQlBbnMucHVzaF9iYWNrKDIpOwoJfQoJCiAgICBmb3IgKGludCBpID0gMDsgaSA8IFQ7IGkrKykgewogICAgCWNvdXQgPDwgQW5zW2ldIDw8IGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==