애너그램은 어떤 단어나 구절의 글자를 재배열해서 만든 다른 단어나 구절이다. 예를 들어 "William Shakespeare"의 글자를 재배열하면 "I am a weakish speller"나 "I'll make a wise phrase"를 만들 수 있다. A가 B의 애너그램이면 B도 A의 애너그램이다.
위 예에서는 대소문자 차이를 무시했고, 공백과 문장 부호를 마음대로 넣거나 뺐다. 이 문제에서는 그런 규칙을 쓰지 않는다. 글자가 정확히 일치하는지만 본다.
두 문자열 s1, s2가 있다. s1의 부분 문자열 s1′이 s2의 부분 문자열 s2′의 애너그램이면, s1′을 두 문자열의 숨은 애너그램이라고 한다. 이때 s2′도 숨은 애너그램이다.
두 문자열이 주어지면 가장 긴 숨은 애너그램의 길이를 구하는 프로그램을 작성하라.
예를 들어 "anagram"과 "grandmother"가 주어졌다고 하자. 부분 문자열 "nagr"와 "gran"은 글자를 옮기면 서로 만들 수 있으므로 숨은 애너그램이다. 그리고 이 둘이 가장 길다. 길이가 5 이상인 "grandmother"의 부분 문자열은 "anagram"에 없는 "d"나 "o"를 반드시 포함하기 때문이다. 따라서 이 경우 답은 4다. 부분 문자열은 원래 문자열에서 연속으로 나타나는 글자의 나열이어야 하므로 "nagrm"과 "granm"은 숨은 애너그램이 아니다.