Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- inf = open("chemistry.in","r")
- ouf = open("chemistry.out","w")
- def p1(v,q): #функция возвращает o1 и b для строки[:k]
- for i in range(len(q)):
- if q[i] == v[0] and q[i:]+q[:i] == v:return [len(v),int(len(v)-i)]
- return [len(v),None]
- def p2(v,q):#функция возвращает o2 и c для строки[k:]
- for i in range(len(q)):
- if q[i] == v[0] and q[i:]+q[:i] == v:return [len(v),int(i)]
- return [len(v),None]
- #######################################
- def main():
- global inf,ouf
- (n,k) = map(int,inf.readline().split())
- word1 = inf.readline().strip()
- word2 = inf.readline().strip()
- if word1 == word2: #изначально исключаем ситуацию равных слов. Чтобы не тратить ресурсы.
- print(0,file = ouf)
- return 0
- (o1,b) = p1(word1[:k],word2[:k])
- (o2,c) = p2(word1[k:],word2[k:])
- if b == None or c == None:
- print(-1,file = ouf)
- return 0
- o = o1/o2
- u1 = (b-c)/o2
- u2 = (b-c-1)/o2
- i = 0
- while (o*i+u1)%1 != 0 and (o*i+u2)%1 != 0: i+=1
- if (o*i+u1)%1 == 0 and (o*i+u2)%1 == 0:
- print(int(min(o1*i+b+o2*(o*i+u1)+c , o1*i+b+o2*(o*i+u2)+c)),file = ouf)
- elif (o*i+u1)%1 == 0: print(int(o1*i+b+o2*(o*i+u1)+c),file = ouf)
- else: print(int(o1*i+b+o2*(o*i+u2)+c),file = ouf)
- main()
- inf.close()
- ouf.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement