You assume that all substrings would need to have the same common character, but that is not the case.
Take a string that repeats the following:
abcdefghijxy0123456789xzabcdefghijyz0123456789xyabcdefghijxz0123456789yz
Every substring of length 12 contains two of x, y and z, so any two substrings of length 12 have a common character. But there are substrings of length 22 containing no x, substrings of length 22 containing no y, and substrings of length 22 containing no z.
You find the minimum length for a globally common character easily in O(n) by keeping track of the length of gaps for each character, and picking the shortest maximum gap. Here's how you do it:
for each character c
c.lastfound = 0
c.largestgap = 0
for 1 ≤ i ≤ length (string)
let c = character #i of the string
c.largestgap = max (c.largestgap, i - c.lastfound)
c.lastfound = i
let minlength = length (string)
for each character c
c.largestgap = max (c.largestgap, length (string) + 1 - c.lastfound)
minlength = min (minlength, c.largestgap)
Any substring of length minlength contains the character(s) c where c.largestgap = minlength, and any two such substrings have those characters in common. On the other hand, if we take len < minlength, then for every character c we have c.largestgap > len. And when c.largestgap was set to that value > len, the preceeding c.largestgap - 1 characters in the string didn't contain c, so there is a substring of length len not containing c.
Runtime is O (max (length (string), number of characters).
The original problem (where you asked for a common character, not for all substrings having the same common character), is a lot harder. Finding the length needed for the same common character is very easy and gives an upper bound.