Double Rainbow
면접 대비시간 제한1초메모리 제한1024 MB
색 배열과 k개의 색이 주어질 때, 모든 색을 포함하면서 여집합도 모든 색을 포함하는 가장 짧은 연속 구간의 길이를 구하고, 없으면 0을 출력한다.
문제
축 위에 개의 점으로 이루어진 집합 가 있고, 각 점은 중 하나의 색으로 칠해져 있다. 개의 색 각각에 대해, 안에 그 색으로 칠해진 점이 적어도 하나 있다. 에서 연속한 점들로 이루어진 집합 에 대해, 과 이 모두 각 색의 점을 적어도 하나씩 포함하면 이 double rainbow를 만든다고 한다. 아래 그림을 예로 보자. 집합 는 열 개의 점으로 이루어져 있고, 각 점은 , , , 중 하나의 색으로 칠해져 있다. 사각형 안에 있는 연속한 다섯 점의 집합 이 double rainbow를 만든다.

점 집합 와 색의 개수 가 입력으로 주어지면, double rainbow를 만드는 의 최소 크기를 계산해 출력하는 프로그램을 작성하라.
입력
프로그램은 표준 입력에서 데이터를 읽는다. 입력의 첫 줄에는 두 정수 과 ()가 주어지며, 은 에 있는 점의 개수, 는 색의 개수이다. 다음 개의 줄에는 각각 이상 이하의 정수가 하나씩 주어지며, 번째 줄은 에서 왼쪽에서 번째 점의 색을 나타낸다.
출력
프로그램은 표준 출력에 결과를 쓴다. 정확히 한 줄을 출력하라. 그 줄에는 double rainbow를 만드는 의 최소 크기를 출력한다. 그러한 이 없으면 0을 출력한다.