회문
시간 제한5초메모리 제한256 MB
서로 다른 팰린드롬 n개가 주어질 때, 두 팰린드롬을 이어 붙여 다시 팰린드롬이 되는 순서쌍의 개수를 센다. 전체 길이는 2,000,000 이하다.
문제
어린 조니는 단어를 가지고 노는 것을 좋아합니다. 조니는 회문(앞에서 읽으나 뒤에서 읽으나 똑같은 단어, 예를 들어 dad, eye, racecar) 개를 골랐습니다. 그런 다음 이 회문들로 만들 수 있는 개의 순서쌍을 모두 만들고, 각 쌍의 두 회문을 순서대로 이어 붙여 하나의 단어로 만들었습니다. 마지막으로, 이렇게 만들어진 단어들 중 그 자체가 회문인 것이 몇 개인지 세었습니다. 조니는 실수하지 않았는지 확신할 수 없어, 여러분에게 똑같은 과정을 수행해 그 결과를 알려 달라고 부탁했습니다.
다음을 수행하는 프로그램을 작성하세요.
- 표준 입력에서 조니가 고른 회문들을 읽는다.
- 입력의 회문 두 개를 순서대로 이어 붙여 만든 단어들 중 그 자체가 회문인 것의 개수를 구한다.
- 그 결과를 표준 출력에 쓴다.
입력
표준 입력의 첫째 줄에는 조니가 고른 회문의 개수를 나타내는 정수 ()이 주어집니다. 이어지는 개의 줄에는 각 회문에 대한 설명이 주어집니다. 번째 줄에는 번째 회문의 길이를 나타내는 양의 정수 와, 영어 소문자 개로 이루어진 회문이 공백 하나로 구분되어 주어집니다. 서로 다른 줄의 회문은 모두 서로 다릅니다. 모든 회문의 길이의 합은 2,000,000을 넘지 않습니다.
출력
이어 붙였을 때 그 자체가 회문이 되는 회문 순서쌍의 개수를 정수 하나로 첫째 줄에 출력합니다. 순서쌍 는 인 경우도 포함하며, 일 때 와 는 서로 다른 쌍으로 셉니다.