Загрузка данных


import sys

def solve():
    # Чтение входных данных
    input = sys.stdin.read
    data = input().split()
    if not data:
        return
    
    n = int(data[0])
    k = int(data[1])
    s = data[2]
    
    # Словарь для хранения количества вхождений биграмм внутри строки s
    counts = {}
    
    # 1. Считаем биграммы внутри одной строки s
    for i in range(n - 1):
        bigram = s[i:i+2]
        counts[bigram] = counts.get(bigram, 0) + 1
        
    # Умножаем внутренние вхождения на количество копий k
    for bigram in counts:
        counts[bigram] *= k
        
    # 2. Учитываем биграммы на стыках строк (если копий больше одной)
    if k > 1:
        boundary_bigram = s[-1] + s[0]
        counts[boundary_bigram] = counts.get(boundary_bigram, 0) + (k - 1)
        
    # Находим лучшую биграмму
    best_bigram = ""
    max_count = -1
    
    # Сортируем ключи лексикографически, чтобы при равенстве автоматически выбралась меньшая
    for bigram in sorted(counts.keys()):
        if counts[bigram] > max_count:
            max_count = counts[bigram]
            best_bigram = bigram
            
    # Вывод результата
    print(best_bigram)
    print(max_count)

if __name__ == '__main__':
    solve()