Longest Substring with At Most K Distinct Characters