ABC 거리

1번 블록에서 출발해 A, B, C 순서에 맞는 블록만 밟아 N번 블록까지 이동할 때 점프 길이 제곱합을 최소화합니다.

보통4동적 계획법면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

ABC 거리는 보도블록 NN개가 일렬로 놓인 도로다. 보도블록에는 1번부터 NN번까지 번호가 붙어 있다.

준서의 집은 1번 블록에, 하윤의 집은 NN번 블록에 있다. 준서는 하윤을 만나려고 점프해서 이동한다.

각 보도블록에는 A, B, C 중 한 글자가 적혀 있다. 1번 블록의 글자는 항상 A다.

준서는 점프로만 움직이고, 번호가 커지는 방향으로만 뛴다. 지금 ii번 블록에 있다면 i+1i+1번부터 NN번까지 어느 블록으로든 뛸 수 있다. 한 번에 kk칸을 뛰는 데 드는 에너지는 k2k^2이다.

준서는 A, B, C를 순서대로 외치면서 간다. 그래서 준서가 밟는 블록의 글자는 첫 블록부터 차례로 A, B, C, A, B, C, ... 순서여야 한다.

준서가 하윤을 만나는 데 필요한 에너지의 최솟값을 구하는 프로그램을 작성하라.

입력

첫째 줄에 보도블록의 개수 NN이 주어진다. (1N10001 \le N \le 1000)

둘째 줄에 1번 블록부터 NN번 블록까지 적힌 글자가 길이 NN인 문자열 하나로 주어진다. 각 글자는 A, B, C 중 하나이고, 첫 글자는 항상 A다.

출력

준서가 하윤을 만나는 데 필요한 에너지의 최솟값을 출력한다. 하윤을 만날 수 없으면 -1을 출력한다.

NN이 1이면 두 사람이 같은 블록에 있으므로 0을 출력한다.