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()