You are given a string S of length N consisting of lowercase English letters. We will cut this string at one position into two strings X and Y. Here, we would like to maximize the number of different letters contained in both X and Y. Find the largest possible number of different letters contained in both X and Y when we cut the string at the optimal position.
N = int(input())
S = input()
S_set = list(set(S))
mx_ans = 0
for n in range(N):
  X = S[:n]
  Y = S[n:]
  ans = 0
  for i in range(len(S_set)):
    if X.count(S_set[i]) == Y.count(S_set[i]):
      ans += 1
  if mx_ans < ans:
    mx_ans = ans
print(mx_ans)
N = int(input())
S = input()
S_set = list(set(S))
mx_ans = 0
for n in range(N):
  X = S[:n]
  Y = S[n:]
  ans = 0
  for i in range(len(S_set)):
    if (X.count(S_set[i])>0) and (Y.count(S_set[i])>0):
      ans += 1
  if mx_ans < ans:
    mx_ans = ans
print(mx_ans)