FINDSR - Find String Roots

In mathematics, the N-th root of a number M, is a number K such that KN = M , i.e. KKK ... K = M where K is multiplied N times.

We can translate this into strings. In string notation, the juxtaposition is concatenation instead of multiplication. So, the N-th root of a string S is another string T such that TN = S, where T N = TTT ... T is the string T concatenated N times. For instance, if S = “abcabcabcabc”, for N = 2 the string T = “abcabc” is the N-th root of S, while for N = 4 its N-th root is T = “abc”. Note that for N = 1 any string S is the N-th root of S itself.

Given a string S you have to find the maximum N such that the N-th root of S exists. In the above example the answer would be 4, because there is no N-th root of S = “abcabcabcabc” for N > 4.

Input

The input contains several test cases, each one described in a single line. The line contains a non-empty string S of at most 105 characters, entirely formed of digits and lowercase letters. The last line of the input contains a single asterisk (“*”) and should not be processed as a test case.

Output

For each test case output a single line with the greatest integer N such that there exists a string T that concatenated N times is equal to S.

Example

Input:
abcabcabcabc
abcdefgh012
aaaaaaaaaa
*

Output:
4
1
10

Added by:Pablo Ariel Heiber
Date:2010-08-22
Time limit:1s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All except: NODEJS OBJC PERL6 VB.NET
Resource:FCEyN UBA ICPC Selection 2009

hide comments
2015-03-30 23:56:49 Nikhil Khurana
Dont use memset !!
2015-01-28 14:15:09 Anmol Pandey
Superb Question .
try for somewhat linear O(n)
avoid string STL(likely to cause TLE)
2014-09-11 13:50:20 Deepak Gupta
Was getting TLE when using memset for each case.Got AC by removing it
2014-08-21 17:07:38 Superty
Ad hoc problem.
2014-07-19 10:03:38 ___Durgesh___
interesting one :)
2013-10-24 15:34:16 Mitch Schwartz
@prudhvi: I havent experimented to find max number of test cases in an input file, but surely you can see that using only strings of random letters will tend to miss all the interesting cases for this problem?
2013-10-24 15:01:58 prudhvi
HOW MANY TEST CASES ARE THERE?
FOR 1000 TEST CASES AND 10^5 SENTENCE CONTAINING RANDOM LETTERS MY PROGRAM RUNS IN 0 SEC
BUT TLE HERE
finally yes :)
thanks Mitch Schwartz

Last edit: 2013-10-25 20:00:44
2013-09-12 04:12:18 Mitch Schwartz
@Gupta: You have expressed the notion that "getting correct answers for the sample input is a good indicator that my solution is correct". In general, the sample input/output may be quite simple, designed more for basic understanding of the problem and expected formatting rather than helping users uncover common bugs. Many people express this notion in comments, and I don't know why they do; it's completely unfounded and just takes up space. Moreover, giving additional cases in the comments is very often a spoiler, yet it is common all the same. You may try the forum for help with debugging.
2013-09-11 16:28:03 Gupta
Is there any special test case for this problem?I am getting the correct answer for the above mentioned test cases but while submitting I am getting WA.Plz comment
2013-06-28 12:17:58 abdou_93
nice

@Pablo Ariel Heiber....test case very weak ..you must add cases like that.."abcababcab"..and Rejudge submission

Last edit: 2013-06-28 12:28:33
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.