def run():
        best_motifs = []
        for seq in dna:
            pos = random.randrange(len(seq) - k + 1)
            best_motifs.append(seq[pos:pos + k])
        best_score = score_motifs(best_motifs)
        motifs = best_motifs[:]
        for _ in range(N):
            i = random.randrange(t)
            profile = make_profile(motifs[:i] + motifs[i + 1:], k)
            motifs[i] = profile_rand_kmer(profile, dna[i], k)
            score = score_motifs(motifs)
            if score < best_score:
                best_motifs, best_score = motifs[:], score

        print_motifs(best_motifs)
        return best_score, best_motifs
def main1():
    input_dna = '''ttACCTtaac
gATGTctgtc
ccgGCGTtag
cactaACGAg
cgtcagAGGT'''
    dna = [Seq(line.strip(), IUPAC.unambiguous_dna) for line in input_dna.upper().split('\n')]
    input_motifs = '''ttac
gtct
ggcg
taac
gtca'''
    motifs = [Seq(line.strip(), IUPAC.unambiguous_dna) for line in input_motifs.upper().split('\n')]
    print_motifs(motifs)

    profile = make_profile(motifs, 4)
    print
    print profile

    print
    new_motifs = []
    for seq in dna:
        new_motifs.append(profile_most_prob(profile, seq, 4))
    print_motifs(new_motifs)

    profile = make_profile(new_motifs, 4)
    print
    print profile

    print
    new_motifs = []
    for seq in dna:
        new_motifs.append(profile_most_prob(profile, seq, 4))
    print_motifs(new_motifs)
def main():
    input = '''8 5 100
    CGCCCCTCTCGGGGGTGTTCAGTAAACGGCCA
    GGGCGAGGTATGTGTAAGTGCCAAGGTGCCAG
    TAGTACCGAGACCGAAAGAAGTATACAGGCGT
    TAGATCAAGTTTCAGGTGCACGTCGGTGAACC
    AATCCACCAGCTCCACGTGCAATGTTGGCCTA'''

    input = '''15 20
CTCTTAACCTACGAGCAGCGGTGAAGCGGACGACATGGCCGAGACAGCACCCACGTGCTGGTGCTAATTACTAAAAAAGCTTGCAGCTGCGATCGCTCCCGGTGTTCCCCGGCGACGTGGAACAATCTTGGCCCTTGTTTACACTAGTCAGCAGGGTTCTGGGATACATCTACTCTTAACCTACGAG
CAGCGGTGAAGCGGACTCTCACAAAGCCCAGGACATGGCCGAGACAGCACCCACGTGCTGGTGCTAATTACTAAAAAAGCTTGCAGCTGCGATCGCTCCCGGTGTTCCCCGGCGACGTGGAACAATCTTGGCCCTTGTTTACACTAGTCAGCAGGGTTCTGGGATACATCTACTCTTAACCTACGAG
GTCTGGCCAAGCCCAGCTTCAATTCCGAGTAAGATTGTGTGCTAGCACTGCAGAATGCCGTAGAGACTCACCGGTATTGGGCAATGTAGCTGGCGGGCTTATATGGTGAAACCATAAACGAACATCTTCGGCACTTTGGCGGTTGAACTCTCAGACGGGGCAACAGTATACTTCCAGTACCTACATT
ACCTGATATGCCAAGTATTCTGCAAATGTGGCTAACTGCCACCTCCAAGGAAAAGCCTCATGGTAAGAAGTACTGTCTTAGCAGAAGACCCTGCAACTGCGCGTGACGTCGTGATTGTCGCATCACCTAAAGGTGCACCGCTGTGGCTCTGCAATGACCCAGGCATCGAAACGTTGAACTGGTGAGC
TACGGACAGCGACCTTCTGCAAAAGTAAAGCAGAGCCGGAACGACGAACACACTTCCTAGTCCATTTTAAGGAGCCATCGATAACAATTCCGGAGATCGTTCCCTGTTAGTTACCGGGAACGGGGGTATGGTCTGTAGGGACCCATCGCGTTCAACGTCAGTCCTTTATTCACGGTCAGTTGATGAT
ACAGCTGTGTGCTTCGTAAGCGTCTCCCCAACTACCACATGTCTGCTACTATCTCTTTTGTAGGCTGGCCTCAACCCTCCTTTCTAACCCTTCACCGTGAAATTAGCGCCAATTATGGTATAACGTCAGGCTTGTACCTGAGCGCAAAAGCCCAGTGTGTTACCTTCGGCCAGAATGCACATCCCCA
TAGTTTTTGTTCCAAGGACCGGGAAAGGGTAGGCTGTACCTAAATCGGAACTAGGCTTTACGGTCACGCAACAATCCTCGCCGATTGCTTTAGATTCTTGGTTGACATGAGCCGCAAATCCCCCTGTATTGCAAAAGCCCACCAGGCCAAGTTACATTCACTGTTCCGGATCTGAATCGACTCACGC
CCGCTTACGAAAGGGAGGCTTCCGATAGACTCATCAATCGCATTAGCCCCACGTCTGCAAAAGCGTCGTGCGCGCTCAAGCATAGAAGCGATAGCCAGGTGATGCTCTTAACTGAAGGACGTCAAGAAGCTAACTATGTAGACTAAGGTACGTGGCATCTGAAATCACGCCTCATTCCAATGTACAC
CAGAACCCTGTACGGACGGACGAAAACTTGAGCTCCCGACCCAACAGTAGAACTGACCTGCATTAATGACTCCCTTAGAGATCGATTTGACAAAAAACACAGCATTTAATTCGATAAAAGCCCAGGGCGGGTGGGAGCTGAATCATGAATGTTCATTTTTACCGCGCCTATTCATCCTATCTAAATA
GTTTTTGAATTTGCACCCCTATCACGTATGAGTCCTGCTCAGTAGAGGGCTGCGTAAGATGCTAGCGTTGCAAAATACTGGGATTGCATACGTCGTCCTCTCCCACCGGCTATGCCTAGCACCTTCAGCATCTATGAGTTTAGCCTTTATAACACCATCTGTTGAAGCCCAGCGAGCGGCATGCTCT
TTAAGCTCCGTGGTGATCTGCTGTTCGGGGGATTGTGTCCCGCTTGCTTTATGGTGCGATAGCGAGCGTGAGTAGCTCTGCTGTAGCCCAGCTCTTCCTTGTTGGGTACCGCAAGAGCTAGGACCATTCGGGGATCCGGCGGAGGTTCGTTAAGTCTATTCACCTGTTTCAGAGGAGATAGCTGTTG
TGCATTAACGTATAGGTTTTAATGGGTCCTGCAAAAGCCCCCTTCAGAGCAGCGGCTGACTAACCGCGCATCAGTTGTCTACTGACAAACGCGTACATCGATGGGTCAAACTCTATAGGCTTTGGCTTGCTTGACTACCCTTGAGAATTTTCAAGTAGGTGATGAGAGGCCATTTTCCAACGGCTGT
ACCTGGCAGAATCCTCCTCGGATGAAGCCCAGCTTCATATGATACCTAAAAAGGAGGCATCAGGCCACACTGGGGCGAAGACTCCGAATGGGGCGCGTCGTCTACCTGGTCCTGCAAACCCGTTTTCCTGGCCGATTCTGCAAAAGCCACAGAAGTTGGCAATCCGGATTACCGTGTTCCATTTCAA
ATCCCGCAAAGATCTCTGCACTCGCCCAGAATGGTTTTCAGGCATAAGCCAGCATATTTTCATGCGTTGGCGTTGCTTTTAAGCGTAGTCCAAATTAAGGAGATCCAGCAGTTGTCCAGTCGACCGGTAAGGTCAGGAAAGCATCGTTTATGCAGGTTATCTCTGAGTGAATCGCTTCTTAGGCGCT
GGTACGGTCTGCAAACAACCAGGTGTTGATGCTTCCATATTTCATCGGAACTCCTCGGCGTTAAGACCCCACACACTACAGACGAAGTGAGGGCCATTCGGTTTCCGTCCTAGGGGGTGCTAGACAGCTCTTAACTGCGATACGTGCTTATTGGATTAGACATCCGCTGTCGTGTAGTACACGCTAG
TCTAGTACTAATGGGAGCACCGTCTATAAGGGAGGGGGTGCCTGCGTGAGCCCCCAGTGAGGTTTGCGGGTGGACCAGTTGCGACCAGTTCACCTCTGCTTTTGGGAGGTTACGTCCTTGCTTTACAACTCCGCTTCTCTGAAAGCCCAGCTTGGCTCACGTAAACCGCGCTTACCGTTAGATATAT
GTAGATCAGAACGACGGTAATCTACAATGCCCGTCAACTAGCATTGTGTCCTGCACCTAAAATCCCACTATGCGCTGTAAATAGAACCATTCTGCAAAATTGCAGAGGGGCCAAACCTCATTCCCACAACTTAACCCCTTCCCTGATGGGACTTATAATCAGCGGAGTTGTAATTGCCCTCATACAT
GGTATAAGTTCAACTATACAACCTGACATTTTGTGTAAAGTGACGGATCGCTTTGGGCTACCGAGCGACGGCGATTTTGGGCTTCTCTGCAGGTGCCCAGATTGTTACACTGCAGGAAACCGAGGTGAGGCAGAGCGCGAGTAGTATTCGTGATCACGTATCCTTTGGCAACGGTATGTTTGCCTCC
ATGCGTAGATAAAGCTAGAACCTAGAGATGCTAATAGAAATCTCTAACGGGCGCACCAGAAGCCCTTTCATATAAGTTTAGAGTTGCGCGCACTAAAGTAGTGCAAAGGCCCGCCTCGGTTACCATAGGGCTCTGCCGTAGCCCAGGATCCATCGTCGATCCCAGCAACGGCGGTGACCCGACTTTT
GTTTGCTCTCTCTGTTGTATCCCAGACTACGGTGGGGCTCAATTTTACAAGTTTAGCAGGCTCCAAGTCGCCGGTTATGATCATCCGCAAAATTTTCGGAAAGACAGTCATCCACACGGGGGTATCAGGGGATGCCAGCCAAGTAAGGTTAACCTCTCCTCTGGACAAAAGCCCAGGGGGCGGGTTA'''

    input1 = '''15 20 10000
TAATCTGGGAAATAAGGACTTTACTCATATTGGACGAATATAAGCGGTGGCTAGCGGCGTTTGCTTGATCTATGATTTACGCCCCAGTTTGGTGACAGTTGGTCACGTGAGCAATGAACGATTCGTCATCAGGTTGCCGATCCCTGCACTACTTCTACGTTGTAGTCGTTCGGATACCTCCATGAGATAGGTAAGAACCGAGTGCCGAGGGCCTGCCGTATAGCGTACCCTAATGACGCCGGTCCCACTGGTCTATGGACCTGATAGGCGCGCGAAGCTTCCGGCAAAGGGGATGCTACGAACATTATTTAGGGTCCTAGCCCGGCAGCTTCTCATTCTGCGGTTTCAGGGCTGTTGCGTGCTCGCAGGAGCTGATGGACCAGTGTCTAAGATTCGCCTAATCTGGGAAATAA
GGACTTTACTCATATTGGACGAATATAAGCGGTGGCTAGCGGCGTTTGCTTGATCTATGATTTACGCCCCAGTTTGGTGACAGTTGGTCACGTGAGCTAACGAGGATCGCGAAATGAACGATTCGTCATCAGGTTGCCGATCCCTGCACTACTTCTACGTTGTAGTCGTTCGGATACCTCCATGAGATAGGTAAGAACCGAGTGCCGAGGGCCTGCCGTATAGCGTACCCTAATGACGCCGGTCCCACTGGTCTATGGACCTGATAGGCGCGCGAAGCTTCCGGCAAAGGGGATGCTACGAACATTATTTAGGGTCCTAGCCCGGCAGCTTCTCATTCTGCGGTTTCAGGGCTGTTGCGTGCTCGCAGGAGCTGATGGACCAGTGTCTAAGATTCGCCTAATCTGGGAAATAA
ATGCTGCATGGCCGAAAGGAATGACTCGAACCCACATGGCAAAAAATCGGAGCCCCGGAGACGGACTCTGGGCGGAGCATTCTCCTTTTCTCTCGGATCGCGACATTTCCCGTTCGATTTCTTGTTGATTTCCTTCCCGCATATGTATGCCGCCCAAGGTCGGGATAGAGTAAAGTCGTCACACCGATTAAAAATCGTTCAGACGACGCCTAACAAATCACTTGTTATTAGTGAATATGGTCCAACAGGAGTAGGATAGAACGATGGGTTAACCAAACCACGGGCCCGCGATTGGCCGCCATTTCGACAGTATCTGCTGACGAACACTCATGTCCAAAGTAGCTCCGATATTGGCGATTCCGAAGCGACGGCGGCGCAAGCGTCGGCGGAAGTTCAAGAGGGAATAAACAACT
AATAGAATAGTATCCCTCTAGATAGATGGCAATAGTTGTATCGTAAACTGCGATTTCCGGTGCACCGGATAAGATATGGTCGTGTGACTCTTTCATTCGGAGAGTGTTTTAGTGCAGATAAAACTACGACGTACACACATTCCATACTGCGGCTTTTGTTGGGCTTGACTACTCTGATGCGATGTGTGGACCATGCAGAGGATCTTTGTCCTATTGCTCCGATGCAACTGTTACAGGAATAAGCAGTCCAAGCTAAAACCGATCTAGCATGGCTGTTAAAAGAGATCGCGAACCCAGCCTACGTTCTCTCGAACAATCACTGTTAGGACACTTGCTTTGTGGACGACAATGTCGCCTCTCAGAATTACACTTCAATTCGGGCAAACGGAGTCAGTTGTGCGATGAACCAGGTT
AAAGGTTCGAGGGAGGTAGATGATCCTACAAGAGGAACCGGCTCCATAAAAGGATGGGTAGACTGCGTGAGTATCATTTATAAACTAGATCGCGAATCCACGATGCTGGTGGGCCGCCGAGCTAATCCGGTACATAAGATTTCTCCGGCTTTTTCCACGGGCTGAGGACAATGGTGTGACAGCTGTCAAGCCAAGGCTGGATCCCTAGTTTATGGCGCAACCGTGAAGGGTCAGTTTCACTTACGTCCCTTTTTGCATATCAACGATTCTTAATGTTCCCCCCGTCACAGAAGCCCGTACGAAGCCTAGCATCGACATTGTAGATGTGATGACGGGGCAACCTTCCAACGCGTCGAGATCTACAGAACTACAGCTACCAGTAATTGTCGCGAATCTAAAAAGTGCGTTGGCCG
CCGACTTGACGCTAGGTAATTGGTCCTCGTCGCGCGGCTTTGTCGGTCAACCTGCGATACGCCAAGAGGGGCGACGCCTGTGAACGATGTGGCTGACAATGGAGAGCTTGTCGAGGGCTGACGACTGAAGGGGCAATTACAGGCGAGGTGACACCTGCCGGCTATATCACGTTACGTACTAATTATTTTGCGTATGGACATACGGCATGACTCTGGTTTCATTAGTTACATCATACATTGCTATACGGCCTATGATGACCAGCTCATGAAGGATCAATGTGGTCTGCTTCGAATAGACCGAGAAATAGTAGCACCTCCTTTATGCAATCGGATCGCGTTTGTAATCTTTCTACGCTTAAGCCCATCCTACTCTCCAGGGTTTATGAATCGGGGGCAAGACTTTTTTTTCTATA
ATGGTTGACACTCTACTCACGCCCCGGCAATTTGCAGTTTACAGCAGTGTAATGCACGCAACCCCGGAGCCTGGATCGTTCAGGCGCCCTCGAGACTAATTTTGATTACTTGGACTTGGCGTACCAGCTCTCATGCATAATAACGGTCGGTGGCTGCGTCGACTGGATGCAGCGGGGAATCAAGGCGAAGAGGGCTTGACACGCAGTAGTATCTGTACAACATGTGCGACTACCATTAGTTCGGATCGGATCGCGAGGTACGGCTTAGACTACCTACATCGATTAGACGAACCCACCTCTCCTCGCTCGGATCGCAAAGGAAGAGGGCCCTGGAGCTCATTTCTGTCGTGAGCAAATAGAAAGGCCGGGTTCTAAAACGATAGCTAAGCTGCCCTCGAATAAAAAATGCCCTG
ACCCGTCTATGCTCTAAGGCCGAAGCCACGCAATTGTTGAGATCCCCGCACGGGGGTTGCATCCGTTAAAAATCGTAAATCGCGCAAACGACAACGCCATCCACAAGTCTGTTCTGGGGAAAAGTGTGGCAGCTCGTCTCGACAACTTTTCAATAGAGAATAAATCGACAGTGATCATCGTCCTACCCCCACGGCTCTTGTTCCTTAAATCCTCTCGCGACGATAGGGAGACTCATACACCTACTGGTCGCCCTACCGGCCTTACTAGCTACAATCCCATGAGCGATTGAACTTGGCATGTGGAACCCACTTATCCCCAGTTGCAGTTGAGTGTACACGCAGTTTCGTAGCGACTCGTAGAAATGCGCTCAAAGGCAGGACTGGACCTCTCTAGGATGCGTTAGTTCATTTTG
TAGAAATCGGATCGCATCGATTCCTGTATAATCTTATCGCCGGGTCATGTTTTACTTTCTCGGAGCGTTCCGGTATTTGTGGTATATGGCTTCTGTAGTAAGCAGACCAAGGCCAGCAAGCAACATCGCGACACCCTCGACTGCCGTCCGCCTCAGTATGATCTTTTCGAAAGGTTTAAGGGCCGATTTGAACATATGAAGATGGCACGCTTACTTGCTAGGTTTCATTTTCTGGATAGGATTCTGTATAACTCGGTACGCGCTAAGCATCCAGCTATAGCGCCCCCGGATTACTCGCGTGGCCTCTGCCACAAATGTTTTACTGGCCATCCATGGGACGGCGGTGAACCCCGTGACCTATACCCGTCCCTCCCGTCAACTCACAGCTGGGTGCGCGAGTTAACCCCGATTCG
AATTCAAGGCGGATCCGCTTTAGCCCAGCTTACGAGGATCAGAATATGGGCGACCGTGAATTATAACTTGGTCTCTTCGGAGCGTCTGATCGTAAAATGTAGCGCGCAAGTCGTGGGACTCACTCCTTTAAGCCTCAACAGTCCTTAATAACCCACCAGCTAGTTGGTAATTTTATGGTATCGGTGGGCAGGGCATTCGGTAGCAAGAGCAAGCGTCAATGGTGCCAAGTCTTAATTAACGGAGACGCATCGGCCTCGTCCCGCAAGATATAACACGAAGTATGGGCTTCTATCAGCCGTGCAGAAGTGATCCCTAGGACCCAGCCCGAGATACAATGACATCAGATGTAATAGTACGCTGCGGTGAGCGATCTGGGACATAAATTTCATCGCGATTCCCATAAATTTCCCAT
ACTGTCAGTCTGGAGGAAGGGGCCCTGATCAGCAATGATCTTCAGGGCGTCGAGCGGCCCTGGCTCAACGTGCGCATAGTTTGGTGCCCCCATTTTCTCCGCTACGATGACTGGAAGTCGAACTTACGCTGTCTCATCGCACATCAGGGCGGGAGTTGGAAGTAGGTAAACAACAAACTGCGAGGGAGATTGCGGGATATGAGAGGGAGTATGTTTGCGCAACCCGTCGGCCCTGGTACGTGCCCTGCCCCGTGGTCGACCTGGGCGGCTCGTGACGGGGCACCTCAGTCTTTGTTTGCTGGATATTCTAAGACAAGCAGTTCAATGCGCCCTCCCAGAACCAACTTAAATCGGATTTGGATCCTCATAAGAGAGAGGTGACACAGCCATGGGGAGCTTGCAAGAAGATGACG
GCGTAGGAAATAGCCGTTGCTGCTAGTCAAAAACTATAGACGGTTGACATCATCAAAGTCAAGAGGCAAGCGACGATGCTGCCCCCAAGCCAAGAGGATAAATGACATCGCGATCGCAGCGCGGAAGGACTCACGGACCATACTAATGCAGACGTTGACTACAGGAAGTCTTACACTTACCAATCTGAGGCACACTGGGAGTTGAGAGAGCTGTCTCAGGCTCGAAGTCGATGTGCCTTTCTTCCGACTGAAATCCGCGAGTCACATAAACGGCGGCCTCTTCGAATGGTACTCTGTAGGATGTCCGCTACGCCGCTTGTGATACCCTGTTCCGGCGTACTGCGGGTATTAACATCATCACTTTCGTATGTGGCCCTTTCCTTAGTTCGAGTAACTGTCGAAAAGATGATAAC
AACACACAGCGAATGCACGTCTTAGCAAGGTATAACCCAAATTCTAGTTTCATTAGTATCGATATTACACATACTATAGGACTCTCGCAAGGTTGGCTAAGTCCTAATCAATGTATTTATAGTGACGACGTGTCTTATACAGCGCACTACCGACATTACTCAACGGAGTGACTCACCCCCGCGGTTCAAGTGTCTGAGAGACGATTCTCCAGCTCGTAGCCGTGTCTGCACGTATGCCGGATCGCGATCCGCAGGACACCACAGCAAGCGAGTACTACGCGAGTGCCTCCACCTACCCTGCTTTGGGCCGGAGGCACAAAGTCGGATCTCTTCCCAGGCTCGGCCTGCGGCGGTTGGGTCCCCCGATGTATCATGCGAGCGAGAGAGTCAAGTCGGTCAGGGACGTGGCGTTC
GACAAAAGTGGTGCCGGCTTATCGATGTCTTGGCGTTTTGTGGGACCTGTTGGATGGAGGAAACCACCTCTACCAACCCATAGCTTCCGAAGTTGGAACTTGGCACCCTAACCGTAAAGGCACCCTTCCTCTGATTGAACGAAGAAGTGCATCAACTCCGATGTTACGGCCACAAAAGCGATACGAACCCTGAGTCAGGCTGACGATTCGCATCCATAACCTTCATCGACCGGCAGTAGCAATCAGCTATGGACACACTAGTCCATTTGGACGGGCCTATATTCTAGTCAGACAAGAGAGGTATGTCGACGGCGATCGTAATAGGGATCGCGACGTACCCTCCGCACCACACGGAACTCTACGGATAGTTTCGAGAAGAGTCCGCCTCAGAATCGGAATTCCGTTGAAAACGT
AGGCTAGGACACGCACCGGGGTAAACTCGGTTAGTCGGTGATAGCCCTCGTTCGGACGACCTATTTCGGTGACAGAGGACACTTCAGTCCATGTGCAGTGGTTGGACCTTAATAAGGCACAGATGCTATACGACGTCAGTCTAAATCGGATCGTTTATTACAGCTACAGCCCCCGGCGCCCGTCTGTCTCACTCGGGACCACCTCAAGGTCGAACCAATAGTTGTGGACATTGAAGTCTGCTGAACACCACATACGCTATATACTGCCACTGGCGCCAAATGTCGACACACCGTACGGGCGAGGAATGTTGACTCTTACTAAGAGGGAGATGTAGAAGCTGTATAACCACACCGGTTGAATTTTCGTCCCCATTGTGACACCGAACCTCACGAGGAAGATACAGTTTTCTTTG
GAAGACAATTGGAAGCGTCGCCCGACTACCCCTCGTCTGAGACTATCGCATCGTGCATGGTCATGGCATCATTAGGACGTACAAGGAAGGTGCCTCCGTAGGAGGTGGACCCTTCTAAAGCGTGCGCAACATACCGCTCGGCTTATCTGAATTCTTTAGACAATATGGCTGTTATAGGTACTTATCTTCACCTGCATTTCGTACGACCGGGCTGGTTTGACTTAAGACCTGGTACAGGTTAGTCGTTGGAGACGGTCAATCGCTTAACAACTAAATCGGTGGGCGACGCCCCCTTGAATGCGGAGATTGAGTAGCCCGCTCAAGCCCTATATCCTAGTTTTTGCGCATGTAGCTTATAAGTCTTTTACCTCAGGCGTGGGGGACTTATCTGGGACTTTTATATATGGACAACC
TAGACGATGATTTATACAAACGGACGAGAGGGGGCTGGGAGCGGTGCGAGGCTGCGCTCCCAGTCTGAAGATGGGGAATGTTATCTTCCATTCTGGTGTGGTCGACGCCGTGCTCGTCGTGAACCAAGCCCTATCCCCGCAATTTAGAGCGTATCGCCCTATCAGGCTGTTTGGGCTCTTGGATCCCTTGGAATATAATTATCGGGCCGGCAGGTTAGGCCATATACCTAGTCCGTAATGTGTTGGAGGGCGTCGCCGAATTGGAGGTCTAATCATTTGAGATACGAGACCGGTTGGTTTAGATTTAAGACAAGTCTTGGATGCCTCGGGGATGTATAGGCGTTCCTGTATAAATCGCTGCGCGACACTTTCCTCAGTGTCAGTGTCCAGATAGTAGGGTGCCTCTACCCGCA
TTTCCTAAATCGCTCTGACTACGGCATCTCGAGTCTACCATGCTGTGTGGATTTTAAGAAGTATCCTAAGAATGACTATCTAGACGAACCTACCGCAAAAAGGGCCTGGTAATTCCACCTGATTAATCGAGGTCGAATCGAGTTACGACTGGGCGTTGTTAAATCGGAGGCCGAATAACTCGCTACATAAGTCAAAGGTGCTCTAAAGCTATACAAGTCACTGCGCGGGGGGATCACACTACTAACATGTAGTCCCAAAGTTACAAACCGAACCCGCCACTTTGCTTCTGCTACAAGGCCACATTGACTAATCATGACACTCAAGTGGTTCAACGCACCCGACTGCAATCATCTTGTCGCGATATTTCGTCCCGTTGTAGTTATCCAGCTATGTAGCCAAATTCAGGCCGTTG
TATGTTACTGAGGCAATGATCGCCTAGTTGCGGAGTATCCTTTAGAGTGGGGACTCGGAGGGAATGATTGCTGTTTGGACTTACAGCAGGTCCTCAACCACCTGAATCCCAGGGTCTCCGAGAACTCAGCCTTCGGGGACGAAACCGAAAATTACGCTAATTCTGTACTTTGCCATCGGGTTGAGGACACCTTTCCTACATCTGGCGTGCGCGCTTGAACTGGGAGCATTGTTTATCCCTCGAGGCTAAATCGGATCAGTAGCCCGTGATCATTGGGATACGCGGTATGCATCGCACTCAACGGCACTGATCGAATAGTTATGTTCTTCGCTGAGCAAGTATGCACGAGCATTGACTGAGCCGAGACGATTTGAGCTTATGTAACCCCTCTATCAGCTCGCGACATGCGTCTT
GTATCAGCGAAAAGGAAAGGTACTGAGTCCTTTCGAGGTGTCAGGACGTCGCCTCCCCCGTCACATGCCTGATTAGGTCTTGCGGCTCTAAATCACTTCGCGATAGCGGCAACAACTGTTCCCCGGTCGGGCAAGTAACGCCCGCACTGGCCAGATCTTACAATCATATTTTTTACCAGCCTAATCGCGATGTCATTCGCATATTACGTATTATGCACACCACAGCTATGTGTTTCATGCCCAGAGAGCGATCTTCTTAGGCCGGCAGATTGCATAGCTATACGAAACTGGTTTAGCGTCCTTGGCATGCACGCCATAGACAATCAACACCTCTGGACAAATCATCACAGGCCCTTCAACAAACCAATGGGCGAAGGGTTCGTGCGTATGCGCCTTGACGGCAATGAGACGAG'''

    input1 = '''10 10 1000
    GCGCCCCGCCCGGACAGCCATGCGCTAACCCTGGCTTCGATGGCGCCGGCTCAGTTAGGGCCGGAAGTCCCCAATGTGGCAGACCTTTCGCCCCTGGCGGACGAATGACCCCAGTGGCCGGGACTTCAGGCCCTATCGGAGGGCTCCGGCGCGGTGGTCGGATTTGTCTGTGGAGGTTACACCCCAATCGCAAGGATGCATTATGACCAGCGAGCTGAGCCTGGTCGCCACTGGAAAGGGGAGCAACATC
CCGATCGGCATCACTATCGGTCCTGCGGCCGCCCATAGCGCTATATCCGGCTGGTGAAATCAATTGACAACCTTCGACTTTGAGGTGGCCTACGGCGAGGACAAGCCAGGCAAGCCAGCTGCCTCAACGCGCGCCAGTACGGGTCCATCGACCCGCGGCCCACGGGTCAAACGACCCTAGTGTTCGCTACGACGTGGTCGTACCTTCGGCAGCAGATCAGCAATAGCACCCCGACTCGAGGAGGATCCCG
ACCGTCGATGTGCCCGGTCGCGCCGCGTCCACCTCGGTCATCGACCCCACGATGAGGACGCCATCGGCCGCGACCAAGCCCCGTGAAACTCTGACGGCGTGCTGGCCGGGCTGCGGCACCTGATCACCTTAGGGCACTTGGGCCACCACAACGGGCCGCCGGTCTCGACAGTGGCCACCACCACACAGGTGACTTCCGGCGGGACGTAAGTCCCTAACGCGTCGTTCCGCACGCGGTTAGCTTTGCTGCC
GGGTCAGGTATATTTATCGCACACTTGGGCACATGACACACAAGCGCCAGAATCCCGGACCGAACCGAGCACCGTGGGTGGGCAGCCTCCATACAGCGATGACCTGATCGATCATCGGCCAGGGCGCCGGGCTTCCAACCGTGGCCGTCTCAGTACCCAGCCTCATTGACCCTTCGACGCATCCACTGCGCGTAAGTCGGCTCAACCCTTTCAAACCGCTGGATTACCGACCGCAGAAAGGGGGCAGGAC
GTAGGTCAAACCGGGTGTACATACCCGCTCAATCGCCCAGCACTTCGGGCAGATCACCGGGTTTCCCCGGTATCACCAATACTGCCACCAAACACAGCAGGCGGGAAGGGGCGAAAGTCCCTTATCCGACAATAAAACTTCGCTTGTTCGACGCCCGGTTCACCCGATATGCACGGCGCCCAGCCATTCGTGACCGACGTCCCCAGCCCCAAGGCCGAACGACCCTAGGAGCCACGAGCAATTCACAGCG
CCGCTGGCGACGCTGTTCGCCGGCAGCGTGCGTGACGACTTCGAGCTGCCCGACTACACCTGGTGACCACCGCCGACGGGCACCTCTCCGCCAGGTAGGCACGGTTTGTCGCCGGCAATGTGACCTTTGGGCGCGGTCTTGAGGACCTTCGGCCCCACCCACGAGGCCGCCGCCGGCCGATCGTATGACGTGCAATGTACGCCATAGGGTGCGTGTTACGGCGATTACCTGAAGGCGGCGGTGGTCCGGA
GGCCAACTGCACCGCGCTCTTGATGACATCGGTGGTCACCATGGTGTCCGGCATGATCAACCTCCGCTGTTCGATATCACCCCGATCTTTCTGAACGGCGGTTGGCAGACAACAGGGTCAATGGTCCCCAAGTGGATCACCGACGGGCGCGGACAAATGGCCCGCGCTTCGGGGACTTCTGTCCCTAGCCCTGGCCACGATGGGCTGGTCGGATCAAAGGCATCCGTTTCCATCGATTAGGAGGCATCAA
GTACATGTCCAGAGCGAGCCTCAGCTTCTGCGCAGCGACGGAAACTGCCACACTCAAAGCCTACTGGGCGCACGTGTGGCAACGAGTCGATCCACACGAAATGCCGCCGTTGGGCCGCGGACTAGCCGAATTTTCCGGGTGGTGACACAGCCCACATTTGGCATGGGACTTTCGGCCCTGTCCGCGTCCGTGTCGGCCAGACAAGCTTTGGGCATTGGCCACAATCGGGCCACAATCGAAAGCCGAGCAG
GGCAGCTGTCGGCAACTGTAAGCCATTTCTGGGACTTTGCTGTGAAAAGCTGGGCGATGGTTGTGGACCTGGACGAGCCACCCGTGCGATAGGTGAGATTCATTCTCGCCCTGACGGGTTGCGTCTGTCATCGGTCGATAAGGACTAACGGCCCTCAGGTGGGGACCAACGCCCCTGGGAGATAGCGGTCCCCGCCAGTAACGTACCGCTGAACCGACGGGATGTATCCGCCCCAGCGAAGGAGACGGCG
TCAGCACCATGACCGCCTGGCCACCAATCGCCCGTAACAAGCGGGACGTCCGCGACGACGCGTGCGCTAGCGCCGTGGCGGTGACAACGACCAGATATGGTCCGAGCACGCGGGCGAACCTCGTGTTCTGGCCTCGGCCAGTTGTGTAGAGCTCATCGCTGTCATCGAGCGATATCCGACCACTGATCCAAGTCGGGGGCTCTGGGGACCGAAGTCCCCGGGCTCGGAGCTATCGGACCTCACGATCACC'''

    k, t, N = map(int, input.split('\n')[0].split())
    dna = [Seq(line.strip(), IUPAC.unambiguous_dna) for line in input.upper().split('\n')[1:]]

    #best_motifs = randomized_motif_search(dna, k, t)
    best_motifs = gibbs_sampler(dna, k, t, N, 20)

    print
    print 'Mine:',
    print_motifs(best_motifs)

    print
    print 'Theirs:',
    print_motifs([l.strip() for l in '''TCTCGGGG
    CCAAGGTG
    TACAGGCG
    TTCAGGTG
    TCCACGTG'''.split()])