Given a string of length N, find the length of the smallest sub-string consisting of maximum distinct characters. Note : Our output can have same character.

**Examples:**

Input : "AABBBCBB"
Output : 5
Input : "AABBBCBBAC"
Output : 3
Explanation : Sub-string -> "BAC"
Input : "GEEKSGEEKSFOR"
Output : 8
Explanation : Sub-string -> "GEEKSFOR"

**Method 1 (Brute Force)**

We can consider all sub-strings one by one and check for each sub-string both conditions together

1. sub-string’s distinct characters is equal to maximum distinct characters

2. sub-sting’s length should be minimum .

Time Complexity : O(n^3)

# Python 3 program to find the length

# of the smallest substring consisting

# of maximum distinct characters

NO_OF_CHARS = 256

# Find maximum distinct characters

# in any string

def max_distinct_char(str, n):

# Initialize all character’s

# count with 0

count = [0] * NO_OF_CHARS

# Increase the count in array

# if a character is found

for i in range(n):

count[ord(str[i])] += 1

max_distinct = 0

for i in range(NO_OF_CHARS):

if (count[i] != 0):

max_distinct += 1

return max_distinct

def smallesteSubstr_maxDistictChar(str):

n = len(str) # size of given string

# Find maximum distinct characters

# in any string

max_distinct = max_distinct_char(str, n)

minl = n # result

# Brute force approch to

# find all substrings

for i in range(n):

for j in range(n):

subs = str[i:j]

subs_lenght = len(subs)

sub_distinct_char = max_distinct_char(subs,

subs_lenght)

# We have to check here both conditions together

# 1. substring’s distinct characters is equal

# to maximum distinct characters

# 2. substing’s length should be minimum

if (subs_lenght < minl and
max_distinct == sub_distinct_char):
minl = subs_lenght
return minl
# Driver Code
if __name__ == "__main__":
# Input String
str = "AABBBCBB"
l = smallesteSubstr_maxDistictChar(str);
print( "The length of the smallest substring",
"consisting of maximum distinct",
"characters :", l)
# This code is contributed by ChitraNayal
[tabbyending]
**Output:**

The length of the smallest substring consisting
of maximum distinct characters : 5

**Method 2 (Efficient)**

- Count all distinct characters in given string.
- Maintain a window of characters. Whenever the window contains all characters of given string, we shrink the window from left side to remove extra characters and then compare its length with smallest window fount so far.

Please refer Smallest window that contains all characters of string itself for implementation and more details.

** Asked In : DailyHunt **

This article is contributed by **Harshit Agrawal**. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.