# Chef and String | codechef solution

## Problem

Chef has a string $�$ consisting of lowercase English characters. Chef defined functions left shift $�\left(�\right)$ and right shift $�\left(�\right)$ as follows.

• $�\left(�\right)$ is defined as shifting all characters of string $�$ one step towards left and moving the first character to the end.
• $�\left(�\right)$ is defined as shifting all characters of string $�$ one step towards the right and moving the last character to the beginning.

For example, L("abcd") = "bcda" and R("abcd") = "dabc"

Chef wants to find out whether there exists a string $�$ of the same length as $�$ such that both $�\left(�\right)=�$ and $�\left(�\right)=�$ holds.

###Input:

• The first line of the input contains a single integer $�$ denoting the number of test cases. The description of $�$ test cases follows.
• The first line of each test case contains a string $�$.

###Output: For each test case, If there exists a valid string $�$, print "YES", otherwise print "NO" (without the quotes).

###Constraints

• $1\le �\le 100$
• $1\le \mathrm{\mid }�\mathrm{\mid }\le 1{0}^{6}$
• $�$ contains all lower case English alphabets.
• It's guaranteed that the total length of the strings in one test file doesn't exceed $1{0}^{6}$

### Sample 1:

Input
Output
4
a
ab
abcd
aaaaa
YES
YES
NO
YES

### Explanation:

• In the first test case, Chef can choose $�=�$
• In the second test case, Chef can choose $�$ = "ba" which satisfies both conditions.
• There doesn't exist any valid choice for string $�$ in the third test case.
Code(C++):-
#include <iostream>
using namespace std;

string lShift(string s) {
return s.substr(1, s.length() - 1) + s.substr(0,1);
}

string rShift(string s) {
return s.back() + s.substr(0, s.length() - 1);
}

int main() {
int t;
cin >> t;
while (t--) {
string s;
cin >> s;
cout << ((lShift(s) == rShift(s)) ? "YES" : "NO") << endl;
}
}