숨은 애너그램

두 소문자 문자열 s1과 s2가 주어질 때, s1의 어떤 부분 문자열이 s2의 어떤 부분 문자열과 애너그램 관계가 되는 최대 길이를 구한다.

보통5해시맵문자열완전 탐색슬라이딩 윈도우면접 대비아직 제출이 없습니다시간 제한10초메모리 제한512 MB

문제

애너그램은 어떤 단어나 구절의 글자를 재배열해서 만든 다른 단어나 구절이다. 예를 들어 "William Shakespeare"의 글자를 재배열하면 "I am a weakish speller"나 "I'll make a wise phrase"를 만들 수 있다. A가 B의 애너그램이면 B도 A의 애너그램이다.

위 예에서는 대소문자 차이를 무시했고, 공백과 문장 부호를 마음대로 넣거나 뺐다. 이 문제에서는 그런 규칙을 쓰지 않는다. 글자가 정확히 일치하는지만 본다.

두 문자열 s1s_1, s2s_2가 있다. s1s_1의 부분 문자열 s1s_1's2s_2의 부분 문자열 s2s_2'의 애너그램이면, s1s_1'을 두 문자열의 숨은 애너그램이라고 한다. 이때 s2s_2'도 숨은 애너그램이다.

두 문자열이 주어지면 가장 긴 숨은 애너그램의 길이를 구하는 프로그램을 작성하라.

예를 들어 "anagram"과 "grandmother"가 주어졌다고 하자. 부분 문자열 "nagr"와 "gran"은 글자를 옮기면 서로 만들 수 있으므로 숨은 애너그램이다. 그리고 이 둘이 가장 길다. 길이가 5 이상인 "grandmother"의 부분 문자열은 "anagram"에 없는 "d"나 "o"를 반드시 포함하기 때문이다. 따라서 이 경우 답은 4다. 부분 문자열은 원래 문자열에서 연속으로 나타나는 글자의 나열이어야 하므로 "nagrm"과 "granm"은 숨은 애너그램이 아니다.

입력

입력은 두 줄로 이루어진다.

s1
s2

s1s_1s2s_2는 알파벳 소문자 a부터 z까지로만 이루어지고, 각 길이는 1 이상 4000 이하이다.

출력

s1s_1s2s_2의 가장 긴 숨은 애너그램의 길이를 출력한다. 숨은 애너그램이 없으면 0을 출력한다.