# 문자열 게임 2 import sys input = sys.stdin.readline def find_str(w, k): result = {chr(i): [] for i in range(97, 123)} ans1 = float("inf") ans2 = -1 for i, c in enumerate(w): result[c].append(i) for lst in result.values(): for i in range(len(lst)-k+1): ans1 = min(ans1, lst[i+k-1] - lst[i]+1) ans2 = max(ans2, lst[i+k-1] - lst[i]+1) return (ans1, ans2) def solution(): t = int(input().rstrip()) for _ in range(t): w = input().rstrip() k = int(input().rstrip()) answer1, answer2 = find_str(w, k) if answer2 == -1: print(answer2) else: print(answer1, answer2) return solution() """ 걸린 시간: 1시간 좀 넘게 시간 복잡도: 각 문자마다 슬라이딩 윈도우로 한번씩만 보기 때문에 O(n)이다. 해설: 전체 문자열을 한 번만 돌면서 문자마다 시작, 끝 인덱스와 개수 등을 저장하면서 진행하려고 했는데 한번에 하기에는 변하는 것이 너무 많아서 문자마다 인덱스를 저장하고 답을 구하기로 했다. 이렇게 해도 각 문자마다 한번씩만 보기 때문에 O(n)으로 괜찮다. 모든 알파벳에 대해 나오는 인덱스를 리스트에 순서대로 넣은 후 슬라이딩 윈도우로 K만큼에 있는 인덱스들의 차 + 1을 구한다. 이것이 문자열의 길이인데 3번은 최소값, 4번은 최대값을 구하면 된다. """