#include <iostream>
using namespace std;
int F,L;
int FindMatch(int firstPos, int lastPos, string str)
{
//cout << "First Position:\n" << firstPos <<"\n";
//cout << "Last Position:\n" << lastPos <<"\n";
if (lastPos >= firstPos)
{
if (lastPos < str.length()/2)
{
return FindMatch(firstPos + 1, firstPos + str.length()/2 - 1, str);
}
if (firstPos == lastPos)
{
//cout<<"HERE\n";
return 0;
}
else if (str[firstPos] == str[lastPos])
{
//cout << "firstPos\n" << str[firstPos]<<"\n";
//cout<<"LastPos\n" <<str[lastPos]<<"\n";
return 1 + FindMatch(firstPos + 1,lastPos - 1,str);
}
else
{
//cout<<"else firstPos\n" <<str[firstPos]<<"\n";
//cout<<"else LastPos\n" <<str[lastPos]<<"\n";
return FindMatch(firstPos,lastPos - 1,str);
}
}
else
{
//cout<<"NO POINT";
//cout<<"firstPos" <<str[firstPos];
//cout<<"LastPos" <<str[lastPos];
return 0;
}
}
int IsPalin(string testStr)
{
int matchcount = FindMatch(0, testStr.length() - 1, testStr);
int exp_match = (testStr.length() - 1)/ 2;
if (matchcount >= exp_match) {
return true;
}
else
{
return false;
}
}
int main() {
// Enter number of test cases
// Enter the string for each test case
// Find the number of letters in the string
// If even then
// Find iteratively if there is a match between first and the last letter
// If the count of mismatch is only one then give the answer true
// If odd then
// Do same thing , just consider the middle character in itself as a match.
int totTC = 0;
// cout<< "Enter the number of test cases:\n";
cin>>totTC;
int counter = 0;
while (counter != totTC)
{
string test;
cin>> test;
if ( IsPalin(test) )
{
cout<<"YES\n";
}
else
{
cout<<"NO\n";
}
counter++;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IEYsTDsKaW50IEZpbmRNYXRjaChpbnQgZmlyc3RQb3MsIGludCBsYXN0UG9zLCBzdHJpbmcgc3RyKSAKewoJLy9jb3V0IDw8ICJGaXJzdCBQb3NpdGlvbjpcbiIgPDwgZmlyc3RQb3MgPDwiXG4iOwoJLy9jb3V0IDw8ICJMYXN0IFBvc2l0aW9uOlxuIiA8PCBsYXN0UG9zIDw8IlxuIjsKCQoJaWYgKGxhc3RQb3MgPj0gZmlyc3RQb3MpCgl7CgkJaWYgKGxhc3RQb3MgPCBzdHIubGVuZ3RoKCkvMikKCQl7CgkJCXJldHVybiBGaW5kTWF0Y2goZmlyc3RQb3MgKyAxLCBmaXJzdFBvcyArIHN0ci5sZW5ndGgoKS8yICAtIDEsIHN0cik7CgkJfQoJCWlmIChmaXJzdFBvcyA9PSBsYXN0UG9zKQoJCXsKCQkJLy9jb3V0PDwiSEVSRVxuIjsKCQkKCQkJcmV0dXJuIDA7CgkJfQoJCQoJCWVsc2UgaWYgKHN0cltmaXJzdFBvc10gPT0gc3RyW2xhc3RQb3NdKQoJCXsKCQkJLy9jb3V0IDw8ICJmaXJzdFBvc1xuIiA8PCBzdHJbZmlyc3RQb3NdPDwiXG4iOwoJCQkvL2NvdXQ8PCJMYXN0UG9zXG4iIDw8c3RyW2xhc3RQb3NdPDwiXG4iOwoJCQkKCQkJcmV0dXJuIDEgKyBGaW5kTWF0Y2goZmlyc3RQb3MgKyAxLGxhc3RQb3MgLSAxLHN0cik7CQkKCQl9CgkJZWxzZSAKCQl7CgkJCS8vY291dDw8ImVsc2UgZmlyc3RQb3NcbiIgPDxzdHJbZmlyc3RQb3NdPDwiXG4iOwoJCQkvL2NvdXQ8PCJlbHNlIExhc3RQb3NcbiIgPDxzdHJbbGFzdFBvc108PCJcbiI7CgkJCXJldHVybiAgRmluZE1hdGNoKGZpcnN0UG9zLGxhc3RQb3MgLSAxLHN0cik7CgkJfQoJfQoJZWxzZQoJewoJCS8vY291dDw8Ik5PIFBPSU5UIjsKCQkvL2NvdXQ8PCJmaXJzdFBvcyIgPDxzdHJbZmlyc3RQb3NdOwoJCS8vY291dDw8Ikxhc3RQb3MiIDw8c3RyW2xhc3RQb3NdOwoJCXJldHVybiAwOwoJfQkJCn0KCmludCBJc1BhbGluKHN0cmluZyB0ZXN0U3RyKSAKewkKCWludCBtYXRjaGNvdW50ID0gRmluZE1hdGNoKDAsIHRlc3RTdHIubGVuZ3RoKCkgLSAxLCB0ZXN0U3RyKTsKCWludCBleHBfbWF0Y2ggPSAodGVzdFN0ci5sZW5ndGgoKSAtIDEpLyAyOwoJaWYgKG1hdGNoY291bnQgPj0gZXhwX21hdGNoKSB7CgkJcmV0dXJuIHRydWU7Cgl9CgllbHNlIAoJewoJCXJldHVybiBmYWxzZTsKCX0KfQoKCmludCBtYWluKCkgewoKLy8gRW50ZXIgbnVtYmVyIG9mIHRlc3QgY2FzZXMKLy8gRW50ZXIgdGhlIHN0cmluZyBmb3IgZWFjaCB0ZXN0IGNhc2UKLy8gRmluZCB0aGUgbnVtYmVyIG9mIGxldHRlcnMgaW4gdGhlIHN0cmluZwovLyBJZiBldmVuIHRoZW4gCgkvLyBGaW5kIGl0ZXJhdGl2ZWx5IGlmIHRoZXJlIGlzIGEgbWF0Y2ggYmV0d2VlbiBmaXJzdCBhbmQgdGhlIGxhc3QgbGV0dGVyCgkvLyBJZiB0aGUgY291bnQgb2YgbWlzbWF0Y2ggaXMgb25seSBvbmUgdGhlbiBnaXZlIHRoZSBhbnN3ZXIgdHJ1ZQovLyBJZiBvZGQgdGhlbgoJLy8gRG8gc2FtZSB0aGluZyAsIGp1c3QgY29uc2lkZXIgdGhlIG1pZGRsZSBjaGFyYWN0ZXIgaW4gaXRzZWxmIGFzIGEgbWF0Y2guCgoKCglpbnQgdG90VEMgPSAwOwovLwljb3V0PDwgIkVudGVyIHRoZSBudW1iZXIgb2YgdGVzdCBjYXNlczpcbiI7CgljaW4+PnRvdFRDOwoJaW50IGNvdW50ZXIgPSAwOwoJd2hpbGUgKGNvdW50ZXIgIT0gdG90VEMpIAoJewoJCXN0cmluZyB0ZXN0OwoJCWNpbj4+IHRlc3Q7CgkJaWYgKCBJc1BhbGluKHRlc3QpICkKCQl7CgkJCWNvdXQ8PCJZRVNcbiI7CgkJfQoJCWVsc2UKCQl7CgkJCWNvdXQ8PCJOT1xuIjsKCQl9CQkKCQljb3VudGVyKys7Cgl9CnJldHVybiAwOwp9