Hard
Given a string s, partition it so that every substring of the partition is a palindrome. Return the minimum number of cuts needed for such a partitioning.
s
Input: s = "aab" Output: 1
Input: s = "a" Output: 0
Input: s = "ab" Output: 1