비트 변환 비용

각 비트의 시작값과 목표값, 비용이 주어질 때, 비트 i를 뒤집으면 뒤집은 뒤 값이 1인 모든 비트 비용의 합을 지불한다. 목표 상태에 도달하는 최소 총비용을 구한다.

어려움8동적 계획법그리디정렬구현아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

11번부터 nn번까지 번호가 붙은 비트 nn개가 있다. 비트 ii의 처음 값은 00 또는 11aia_i이고, 비용은 cic_i이다.

연산 한 번은 비트 ii를 하나 골라 그 값을 뒤집는다. 0011이 되고, 1100이 된다. 이 연산의 가격은 뒤집은 뒤에 값이 11인 모든 비트 jjcjc_j를 더한 값이다. 비트 ii11이 되었다면 그 비트의 비용 cic_i도 이 합에 들어간다.

어떤 비트든 원하는 순서로 몇 번이든 연산할 수 있다. 모든 ii에 대해 비트 ii의 값을 bib_i로 만드는 가격의 합 중 최솟값을 구하여라.

입력

첫째 줄에 비트의 개수 nn이 주어진다. (1n50001 \le n \le 5\,000)

둘째 줄에 각 비트의 비용 c1,c2,,cnc_1, c_2, \dots, c_n이 주어진다. (1ci1091 \le c_i \le 10^9)

셋째 줄에 처음 값을 나타내는 길이 nn짜리 문자열 a1a2ana_1 a_2 \dots a_n이 주어진다.

넷째 줄에 목표 값을 나타내는 길이 nn짜리 문자열 b1b2bnb_1 b_2 \dots b_n이 주어진다.

출력

가격의 합 중 최솟값을 첫째 줄에 출력한다.