
function solution(strs, t) {
    const dp = Array(t.length + 1).fill(Infinity); // DP 테이블 초기화
    dp[0] = 0; // 시작점 초기화
    for (let i = 1; i <= t.length; i++) { // t의 각 문자에 대해 반복
        for (let j = 0; j < strs.length; j++) { // 주어진 단어 조각들에 대해 반복
            const str = strs[j]; // 현재 단어 조각
            const len = str.length; // 현재 단어 조각의 길이
            if (i >= len && t.substring(i - len, i) === str) { // t의 부분 문자열이 현재 단어 조각과 일치하는 경우
                dp[i] = Math.min(dp[i], dp[i - len] + 1); // 최소 개수 갱신
            }
        }
    }
    return dp[t.length] === Infinity ? -1 : dp[t.length]; // 결과 반환
}