output_description: Print the largest possible number of different letters contained in both X and
  Y.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      S
attempt: #!/usr/bin/env python3
  # -*- coding: utf-8 -*-
  """
  Created on Mon Feb 11 05:38:56 2019
  
  @author: shinjisu
  """
  
  
  # ABC 200点問題
  import math
  
  
  def getInt():
      return int(input())
  
  
  def getIntList():
      return [int(x) for x in input().split()]
  
  
  def zeros(n):
      return [0] * n
  
  
  def dmp(x):
      global debug
      if debug:
          print(x)
  
  
  debug = True
  
  
  def getIntLines(n):
      return [int(input()) for i in range(n)]
  
  
  def getIntMat(n):
      mat = []
      for i in range(n):
          mat.append(getIntList())
      return mat
  
  
  def zeros2(n, m):
      return [zeros(m)] * n
  
  
  def prob096():  # Maximum Sum
      X = getIntList()
      K = getInt()
      dmp((X, K))
      total = sum(X) - max(X) + max(X) * 2**K
      return total
  
  
  def prob097():  # Exponential
      X = getInt()
      dmp(X)
      if X == 1:
          return 1
      for n in range(X, 0, -1):
          dmp(n)
          for b in range(2, int(math.sqrt(X)) + 1):
              a = n
              exp = True
              while a > 1:
                  if a % b != 0:
                      exp = False
                      break
                  a //= b
              if exp:
                  break
          if exp:
              break
      return n
  
  
  def prob098():  # Cut and Count
      N = getInt()
      S = input()
      dmp((N, S))
      maxChCount = 0
      for i in range(1, N):
          before = S[:i]
          after = S[i:]
          dmp((before, after))
          chCount = 0
          for j in range(26):
              ch = chr(ord("a") + j)
              if ch in before and ch in after:
                  chCount += 1
          maxChCount = max(maxChCount, chCount)
      return maxChCount
  
  
  debug = False  # True False
  print(prob098())
  
problem_description: Statement
  
  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.
samples: [{"input": "6\n    aabbca", "output": "2\n    \n\nIf we cut the string between the third and fourth letters into X = `aab` and Y\n= `bca`, the letters contained in both X and Y are `a` and `b`. There will\nnever be three or more different letters contained in both X and Y, so the\nanswer is 2.\n\n* * *"}, {"input": "10\n    aaaaaaaaaa", "output": "1\n    \n\nHowever we divide S, only `a` will be contained in both X and Y.\n\n* * *"}, {"input": "45\n    tgxgdqkyjzhyputjjtllptdfxocrylqfqjynmfbfucbir", "output": "9"}]