아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

백신 개발

면접 대비

시간 제한1초메모리 제한1024 MB

요약
N개의 짧은 문자열을 순서를 정해 이어 붙이되 겹치는 부분을 최대한 합쳐 가장 짧은 결과의 길이를 구한다.
난이도

보통10점 중 6점

유형
완전 탐색, 백트래킹, 문자열, 비트 연산
정답자
아직 제출이 없습니다

문제

평소 정보 보안에 관심이 많은 진흥이는 최근 들어 유행하고 있는 컴퓨터 바이러스에 대한 백신을 개발하려고 한다. 바이러스는 NN개의 문자열로 이루어져 있다고 한다. 진흥이가 열심히 연구한 결과, 이 바이러스를 처치할 방법은 다음과 같다.

  • 바이러스를 구성하는 NN개의 문자열을 적당한 순서를 정하여 하나로 이어 붙여야 한다.
  • 앞에 붙는 문자열의 마지막 kk글자와 뒤에 붙는 문자열의 첫 kk글자가 일치하도록 하는 11이상의 정수 kk가 존재해야 한다. 조건을 만족하는 가장 큰 kk에 대해서, 앞에 붙는 문자열의 마지막 kk글자를 삭제하고, 뒤에 붙는 문자열을 그대로 붙인다.
  • NN개의 문자열을 모두 이어 붙였을 때 가장 짧은 문자열이 백신이 된다.

진흥이를 도와 백신이 되는 문자열의 길이를 출력하자. 반드시 답이 존재하는 경우만 주어진다.

입력

첫 번째 줄에 바이러스를 구성하고 있는 문자열의 수 NN (1≤N≤91 \le N \le 9)이 주어진다.

두 번째 줄부터 NN개의 줄에 걸쳐서 바이러스를 구성하는 문자열이 주어진다. 이 때 문자열의 길이는 1010이하이며, 영어 대문자로만 구성되어 있다.

출력

백신이 되는 문자열의 길이를 출력한다.

예제1

  1. 예제 1

    입력
    3
    RUST
    VIRUS
    STAND
    
    예상 출력
    9