For two strings s and t, we say "t divides s" if and only if s = t + ... + t  (t concatenated with itself 1 or more times)
Given two strings str1 and str2, return the largest string x such that x divides both str1 and str2.
Example 1:
Input: str1 = "ABCABC", str2 = "ABC"
Output: "ABC"
Example 2:
Input: str1 = "ABABAB", str2 = "ABAB"
Output: "AB"
Example 3:
Input: str1 = "LEET", str2 = "CODE"
Output: ""
Example 4:
Input: str1 = "ABCDEF", str2 = "ABC"
Output: ""
Constraints:
1 <= str1.length <= 1000
1 <= str2.length <= 1000
str1 and str2 consist of English uppercase letters.
class Solution:
    def gcdOfStrings(self, str1: str, str2: str) -> str:
        contender = ''
        for i in str1:
            contender += i
            if str1.count(contender) * len(contender) == len(str1) and str2.count(contender) * len(contender) == len(str2):
                break
        orig = contender
        ans = None
        while len(contender) <= len(str1) and len(contender) <= len(str2):
            t1 = str1.replace(contender, '')
            t2 = str2.replace(contender, '')
            if len(t1) == len(t2) == 0:
                ans = contender
            contender += orig
        return ans if ans else ''
class Solution:
    def gcdOfStrings(self, str1: str, str2: str) -> str:
        contender = ''
        for i in str1:
            contender += i
            if str1.count(contender) * len(contender) == len(str1) and str2.count(contender) * len(contender) == len(str2):
                break
        orig = contender
        ans = None
        while len(contender) <= len(str1) and len(contender) <= len(str2):
            t1 = str1.replace(contender, '')
            t2 = str2.replace(contender, '')
            if len(t1) == len(t2) == 0:
                ans = contender
            contender += orig
        return ans if ans else ''