# Check if a string can be obtained by rotating another string 2 places

Given two strings, the task is to find if a string can be obtained by rotating another string two places.
Examples:

Input: string1 = “amazon”, string2 = “azonam”
Output: Yes
// rotated anti-clockwise

Input: string1 = “amazon”, string2 = “onamaz”
Output: Yes
// rotated clockwise

## Recommended: Please solve it on “PRACTICE ” first, before moving on to the solution.

```1- There can be only two cases:
a) Clockwise rotated
b) Anti-clockwise rotated

2- If clockwise rotated that means elements
are shifted in right.
So, check if a substring[2.... len-1] of
string2 when concatenated with substring[0,1]
of string2 is equal to string1. Then, return true.

3- Else, check if it is rotated anti-clockwise
that means elements are shifted to left.
So, check if concatenation of substring[len-2, len-1]
with substring[0....len-3] makes it equals to
string1. Then return true.

4- Else, return false.
```

Below is the implementation of above approach.

 `// C++ program to check if a string is two time ` `// rotation of another string. ` `#include ` `using` `namespace` `std; ` ` `  `// Function to check if string2 is obtained by ` `// string 1 ` `bool` `isRotated(string str1, string str2) ` `{ ` `    ``if` `(str1.length() != str2.length()) ` `        ``return` `false``; ` ` `  `    ``string clock_rot = ``""``; ` `    ``string anticlock_rot = ``""``; ` `    ``int` `len = str2.length(); ` ` `  `    ``// Initialize string as anti-clockwise rotation ` `    ``anticlock_rot = anticlock_rot + ` `                    ``str2.substr(len-2, 2) + ` `                    ``str2.substr(0, len-2) ; ` ` `  `    ``// Initialize string as clock wise rotation ` `    ``clock_rot = clock_rot + ` `                ``str2.substr(2) + ` `                ``str2.substr(0, 2) ; ` ` `  `    ``// check if any of them is equal to string1 ` `    ``return` `(str1.compare(clock_rot) == 0 || ` `            ``str1.compare(anticlock_rot) == 0); ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``string str1 = ``"geeks"``; ` `    ``string str2 = ``"eksge"``; ` ` `  `    ``isRotated(str1, str2) ? cout << ``"Yes"` `                          ``: cout << ``"No"``; ` `    ``return` `0; ` `} `

 `// Java program to check if a string is two time ` `// rotation of another string. ` ` `  `class` `Test ` `{ ` `    ``// Method to check if string2 is obtained by ` `    ``// string 1 ` `    ``static` `boolean` `isRotated(String str1, String str2) ` `    ``{ ` `        ``if` `(str1.length() != str2.length()) ` `            ``return` `false``; ` `      `  `        ``String clock_rot = ``""``; ` `        ``String anticlock_rot = ``""``; ` `        ``int` `len = str2.length(); ` `      `  `        ``// Initialize string as anti-clockwise rotation ` `        ``anticlock_rot = anticlock_rot + ` `                        ``str2.substring(len-``2``, len) + ` `                        ``str2.substring(``0``, len-``2``) ; ` `      `  `        ``// Initialize string as clock wise rotation ` `        ``clock_rot = clock_rot + ` `                    ``str2.substring(``2``) + ` `                    ``str2.substring(``0``, ``2``) ; ` `      `  `        ``// check if any of them is equal to string1 ` `        ``return` `(str1.equals(clock_rot) || ` `                ``str1.equals(anticlock_rot)); ` `    ``} ` `     `  `    ``// Driver method ` `    ``public` `static` `void` `main(String[] args)  ` `    ``{ ` `        ``String str1 = ``"geeks"``; ` `        ``String str2 = ``"eksge"``; ` `      `  `        ``System.out.println(isRotated(str1, str2) ?  ``"Yes"` `                              ``: ``"No"``); ` `    ``} ` `} `

 `# Python 3 program to check if a string  ` `# is two time rotation of another string. ` ` `  `# Function to check if string2 is  ` `# obtained by string 1 ` `def` `isRotated(str1, str2): ` ` `  `    ``if` `(``len``(str1) !``=` `len``(str2)): ` `        ``return` `False` ` `  `    ``clock_rot ``=` `"" ` `    ``anticlock_rot ``=` `"" ` `    ``l ``=` `len``(str2) ` ` `  `    ``# Initialize string as anti-clockwise rotation ` `    ``anticlock_rot ``=` `(anticlock_rot ``+` `str2[l ``-` `2``:] ``+`  `                                     ``str2[``0``: l ``-` `2``]) ` `     `  `    ``# Initialize string as clock wise rotation ` `    ``clock_rot ``=` `clock_rot ``+` `str2[``2``:] ``+` `str2[``0``:``2``] ` ` `  `    ``# check if any of them is equal to string1 ` `    ``return` `(str1 ``=``=` `clock_rot ``or` `            ``str1 ``=``=` `anticlock_rot) ` ` `  `# Driver code ` `if` `__name__ ``=``=` `"__main__"``: ` `     `  `    ``str1 ``=` `"geeks"` `    ``str2 ``=` `"eksge"` `if` `isRotated(str1, str2): ` `    ``print``(``"Yes"``)   ` `else``: ` `    ``print``(``"No"``) ` ` `  `# This code is contributed by ita_c `

 `  ``using` `System; ` ` `  `// c# program to check if a string is two time  ` `// rotation of another string.  ` ` `  `public` `class` `Test ` `{ ` `    ``// Method to check if string2 is obtained by  ` `    ``// string 1  ` `    ``public` `static` `bool` `isRotated(``string` `str1, ``string` `str2) ` `    ``{ ` `        ``if` `(str1.Length != str2.Length) ` `        ``{ ` `            ``return` `false``; ` `        ``} ` ` `  `        ``string` `clock_rot = ``""``; ` `        ``string` `anticlock_rot = ``""``; ` `        ``int` `len = str2.Length; ` ` `  `        ``// Initialize string as anti-clockwise rotation  ` `        ``anticlock_rot = anticlock_rot + str2.Substring(len - 2, len - (len - 2)) + str2.Substring(0, len - 2); ` ` `  `        ``// Initialize string as clock wise rotation  ` `        ``clock_rot = clock_rot + str2.Substring(2) + str2.Substring(0, 2); ` ` `  `        ``// check if any of them is equal to string1  ` `        ``return` `(str1.Equals(clock_rot) || str1.Equals(anticlock_rot)); ` `    ``} ` ` `  `    ``// Driver method  ` `    ``public` `static` `void` `Main(``string``[] args) ` `    ``{ ` `        ``string` `str1 = ``"geeks"``; ` `        ``string` `str2 = ``"eksge"``; ` ` `  `        ``Console.WriteLine(isRotated(str1, str2) ? ``"Yes"` `: ``"No"``); ` `    ``} ` `} ` ` `  `// This code is contributed by Shrikant13 `

Output:
```Yes
```

Exercise : Check if string2 is obtained by rotating string1 by k places.

This article is contributed by Sahil Chhabra. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.