문제 링크

문제 설명

예시

[input]
3 2
acp
ae

[output]
6


[input]
6 3
abcdef
abc

[output]
-1

[input]
15 9
dnsusrayukuaiia
dujrunuma

[output]
45

사고의 흐름

모범답안

1. 여기를 누르면 답이 보입니다
def gcd(a, b):
    c = a%b
    while(c != 0):
        a = b
        b = c
        c = a%b
    return b

def answer(s, t):
    a = len(s)
    b = len(t)
    if s[0] != t[0]:
        return -1
    if a < b:
        temp = a
        a = b
        b = temp
        temp = s
        s = t
        t = temp
    gcdAB = gcd(a, b)
    if gcdAB == 1:
        return a*b
    else:
        stack = 0
        sl = (gcdAB * (a//gcdAB) * (b//gcdAB))
        aJump = sl//a
        bJump = sl//b
        for i in range(b):
            if stack%aJump == 0:
                if s[stack//aJump] != t[i]:
                    return -1
            stack = bJump*(i+1)
        return sl
                

sl, tl = map(int, input().split())
s = input()
t = input()
print(answer(s, t))

쉽지않네

2. 여기를 누르면 답이 보입니다