from statistics import median

#import collections

#aa = collections.Counter(a) # list to list || .most_common(2)で最大の2個とりだせるお a[0][0]

from fractions import gcd

from itertools import combinations # (string,3) 3回

from collections import deque

from collections import defaultdict

import bisect

#

#    d = m - k[i] - k[j]

#    if kk[bisect.bisect_right(kk,d) - 1] == d:

#

#

#

# pythonで無理なときは、pypyでやると正解するかも！！

#

#



import sys

sys.setrecursionlimit(10000000)

mod = 10**9 + 7



def readInts():

  return list(map(int,input().split()))

def main():

    S = eval(input())

    sl = len(S)

    S = S[:-1]

    sl -= 1

    while True:

        if sl % 2 != 0:

            S = S[:-1]

            sl -= 1

        else:

            if S[:sl//2] == S[sl//2:]:

                print(sl)

                exit()

            else:

                S = S[:-1]

                sl -=1

if __name__ == '__main__':

  main()

#from statistics import median

#import collections

#aa = collections.Counter(a) # list to list || .most_common(2)で最大の2個とりだせるお a[0][0]

from fractions import gcd

from itertools import combinations,permutations,accumulate # (string,3) 3回

#from collections import deque

from collections import deque,defaultdict,Counter

import decimal

import re

#import bisect

#

#    d = m - k[i] - k[j]

#    if kk[bisect.bisect_right(kk,d) - 1] == d:

#

#

#

# pythonで無理なときは、pypyでやると正解するかも！！

#

#



import sys

sys.setrecursionlimit(10000000)

mod = 10**9 + 7

#mod = 9982443453

def readInts():

  return list(map(int,input().split()))

def I():

  return int(eval(input()))

S = eval(input())

lnS = len(S)

for i in range(lnS-1,-1,-1):

    #print(S)

    S = S[:i]

    flag = True

    if S[:len(S)//2] == S[len(S)//2:]:

        print((len(S)))

        exit()

from statistics import median

# import collections
# aa = collections.Counter(a) # list to list || .most_common(2)で最大の2個とりだせるお a[0][0]
from fractions import gcd
from itertools import combinations  # (string,3) 3回
from collections import deque
from collections import defaultdict
import bisect

#
#    d = m - k[i] - k[j]
#    if kk[bisect.bisect_right(kk,d) - 1] == d:
#
#
#
# pythonで無理なときは、pypyでやると正解するかも！！
#
#
import sys

sys.setrecursionlimit(10000000)
mod = 10**9 + 7


def readInts():
    return list(map(int, input().split()))


def main():
    S = eval(input())
    sl = len(S)
    S = S[:-1]
    sl -= 1
    while True:
        if sl % 2 != 0:
            S = S[:-1]
            sl -= 1
        else:
            if S[: sl // 2] == S[sl // 2 :]:
                print(sl)
                exit()
            else:
                S = S[:-1]
                sl -= 1


if __name__ == "__main__":
    main()

# from statistics import median
# import collections
# aa = collections.Counter(a) # list to list || .most_common(2)で最大の2個とりだせるお a[0][0]
from fractions import gcd
from itertools import combinations, permutations, accumulate  # (string,3) 3回

# from collections import deque
from collections import deque, defaultdict, Counter
import decimal
import re

# import bisect
#
#    d = m - k[i] - k[j]
#    if kk[bisect.bisect_right(kk,d) - 1] == d:
#
#
#
# pythonで無理なときは、pypyでやると正解するかも！！
#
#
import sys

sys.setrecursionlimit(10000000)
mod = 10**9 + 7
# mod = 9982443453
def readInts():
    return list(map(int, input().split()))


def I():
    return int(eval(input()))


S = eval(input())
lnS = len(S)
for i in range(lnS - 1, -1, -1):
    # print(S)
    S = S[:i]
    flag = True
    if S[: len(S) // 2] == S[len(S) // 2 :]:
        print((len(S)))
        exit()

-from statistics import median - +# from statistics import median -from itertools import combinations  # (string,3) 3回 -from collections import deque -from collections import defaultdict -import bisect +from itertools import combinations, permutations, accumulate  # (string,3) 3回 +# from collections import deque +from collections import deque, defaultdict, Counter +import decimal +import re + +# import bisect - - +# mod = 9982443453 -def main(): -    S = eval(input()) -    sl = len(S) -    S = S[:-1] -    sl -= 1 -    while True: -        if sl % 2 != 0: -            S = S[:-1] -            sl -= 1 -        else: -            if S[: sl // 2] == S[sl // 2 :]: -                print(sl) -                exit() -            else: -                S = S[:-1] -                sl -= 1 +def I(): +    return int(eval(input())) -if __name__ == "__main__": -    main() +S = eval(input()) +lnS = len(S) +for i in range(lnS - 1, -1, -1): +    # print(S) +    S = S[:i] +    flag = True +    if S[: len(S) // 2] == S[len(S) // 2 :]: +        print((len(S))) +        exit()