Related Articles
Minimum rotations required to get the same string
• Difficulty Level : Medium
• Last Updated : 20 Oct, 2020

Given a string, we need to find the minimum number of rotations required to get the same string.

Examples:

```Input : s = "geeks"
Output : 5

Input : s = "aaaa"
Output : 1
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

The idea is based on below post.

A Program to check if strings are rotations of each other or not

Step 1 :
Initialize result = 0 (Here result is count of rotations)
Step 2 : Take a temporary string equals to original string concatenated with itself.
Step 3 : Now take the substring of temporary string of size same as original string starting from second character (or index 1).
Step 4 : Increase the count.
Step 5 : Check whether the substring becomes equal to original string. If yes, then break the loop. Else go to step 2 and repeat it from the next index.

## C/C++

 `// C++ program to determine minimum number``// of rotations required to yield same``// string.``#include ``using` `namespace` `std;`` ` `// Returns count of rotations to get the``// same string back.``int` `findRotations(string str)``{``    ``// tmp is the concatenated string.``    ``string tmp = str + str;``    ``int` `n = str.length();`` ` `    ``for` `(``int` `i = 1; i <= n; i++) {`` ` `        ``// substring from i index of original``        ``// string size.``        ``string substring = tmp.substr(i, str.size());`` ` `        ``// if substring matches with original string``        ``// then we will come out of the loop.``        ``if` `(str == substring)``            ``return` `i;``    ``}``    ``return` `n;``}`` ` `// Driver code``int` `main()``{``    ``string str = ``"abc"``;``    ``cout << findRotations(str) << endl;``    ``return` `0;``}`

## Java

 `// Java program to determine minimum number ``// of rotations required to yield same ``// string. `` ` `import` `java.util.*; `` ` `class` `GFG ``{ ``    ``// Returns count of rotations to get the ``    ``// same string back. ``    ``static` `int` `findRotations(String str) ``    ``{ ``        ``// tmp is the concatenated string. ``        ``String tmp = str + str; ``        ``int` `n = str.length(); ``     ` `        ``for` `(``int` `i = ``1``; i <= n; i++) ``        ``{ ``     ` `            ``// substring from i index of original ``            ``// string size. ``             ` `            ``String substring = tmp.substring(``                      ``i, i+str.length()); ``     ` `            ``// if substring matches with original string ``            ``// then we will come out of the loop. ``            ``if` `(str.equals(substring)) ``                ``return` `i; ``        ``} ``        ``return` `n; ``    ``} `` ` `    ``// Driver Method ``    ``public` `static` `void` `main(String[] args) ``    ``{ ``            ``String str = ``"aaaa"``; ``        ``System.out.println(findRotations(str)); ``    ``} ``} ``/* This code is contributed by Mr. Somesh Awasthi */`

## Python3

 `# Python 3 program to determine minimum ``# number of rotations required to yield ``# same string.`` ` `# Returns count of rotations to get the``# same string back.``def` `findRotations(``str``):``     ` `    ``# tmp is the concatenated string.``    ``tmp ``=` `str` `+` `str``    ``n ``=` `len``(``str``)`` ` `    ``for` `i ``in` `range``(``1``, n ``+` `1``):``         ` `        ``# substring from i index of ``        ``# original string size.``        ``substring ``=` `tmp[i: i``+``n]`` ` `        ``# if substring matches with ``        ``# original string then we will ``        ``# come out of the loop.``        ``if` `(``str` `=``=` `substring):``            ``return` `i``    ``return` `n`` ` `# Driver code``if` `__name__ ``=``=` `'__main__'``:`` ` `    ``str` `=` `"abc"``    ``print``(findRotations(``str``))`` ` `# This code is contributed ``# by 29AjayKumar.`

## C#

 `// C# program to determine minimum number``// of rotations required to yield same``// string.``using` `System;`` ` `class` `GFG {``     ` `    ``// Returns count of rotations to get``    ``// the same string back.``    ``static` `int` `findRotations(String str)``    ``{``         ` `        ``// tmp is the concatenated string.``        ``String tmp = str + str;``        ``int` `n = str.Length;``     ` `        ``for` `(``int` `i = 1; i <= n; i++)``        ``{``     ` `            ``// substring from i index of``            ``// original string size.``             ` `            ``String substring = ``                 ``tmp.Substring(i, str.Length);``     ` `            ``// if substring matches with``            ``// original string then we will``            ``// come out of the loop.``            ``if` `(str == substring)``                ``return` `i;``        ``}``         ` `        ``return` `n;``    ``}`` ` `    ``// Driver Method``    ``public` `static` `void` `Main()``    ``{``        ``String str = ``"abc"``;``         ` `        ``Console.Write(findRotations(str));``    ``}``}`` ` `// This code is contributed by nitin mittal.`

## PHP

 ``

Output:
```3
```

Time Complexity: O(n2)

Alternate Implementation in Python :

## Python3

 `# Python 3 program to determine minimum ``# number of rotations required to yield ``# same string.``  ` `# input``string ``=` `'aaaa'``check ``=` `''``  ` `for` `r ``in` `range``(``1``, ``len``(string)``+``1``):``  ``# checking the input after each rotation``  ``check ``=` `string[r:] ``+` `string[:r]``    ` `  ``# following if statement checks if input is ``  ``# equals to check , if yes it will print r and ``  ``# break out of the loop``  ``if` `check ``=``=` `string:``    ``print``(r)``    ``break``  ` `# This code is contributed ``# by nagasowmyanarayanan.`

Output:
```1
```

This article is contributed by Jatin Goyal. 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.