Given a string s and an integer k (k >= 1), partition s into one or more substrings so that every substring is a palindrome and has length at least k. Return the minimum number of substrings in such a partition, or -1 if no valid partition exists. Notes: - Substrings must be contiguous and together cover the whole string. - Palindromes are case-sensitive (i.e., 'A' != 'a'). Constraints to consider for an efficient solution: length of s up to a few thousand characters. Aim for O(n^2) time and O(n^2) or O(n) extra space approaches.
('abacaba', 3)1