// Palindrome Partitioning II — HARD
// Category: dynamic-programming
Given a string `s`, partition `s` such that every substring of the partition is a palindrome.
Return the **minimum cuts** needed for a palindrome partitioning of `s`.
**Approach:** Two-pass DP:
1. `isPalin[i][j]` = whether `s[i..j]` is a palindrome.
Example: s = "aab"
Output: 1