output_description: Print the maximum value taken by x during the operations.
  
  * * *
input_description: The input is given from Standard Input in the following format:
  
      
      
      N
      S
attempt: # -*- coding: utf-8 -*-
  import sys
  from collections import defaultdict, deque
  
  # def input(): return sys.stdin.readline()[:-1] # warning not \n
  # def input(): return sys.stdin.buffer.readline()[:-1]
  
  
  def solve():
      n = int(input())
      s = input()
      cnt = 0
      ans = 0
      for e in s:
          if e == "I":
              cnt += 1
          else:
              cnt -= 1
          ans = max(ans, cnt)
      print(ans)
  
  
  t = 1
  # t = int(input())
  for case in range(1, t + 1):
      ans = solve()
  
  
  """
  
  1 4
  7
  RRRR
  1 1 0 1
  ----
  4
  
  1 4
  47
  RCRR
  1 1 0 1
  ----
  -1
  
  2 2
  10
  RR
  RR
  1 7
  4 1
  ----
  4
  
  2 2
  10
  RR
  RR
  7 4
  7 4
  ----
  -1
  
  3 3
  8
  RCR
  RRC
  RRR
  1 1 1
  1 1 1
  1 3 1
  
  
  3 3
  1
  RCR
  RRC
  RRR
  1 1 1
  1 1 1
  1 3 1
  
  
  """
  
problem_description: Statement
  
  You have an integer variable x. Initially, x=0.
  
  Some person gave you a string S of length N, and using the string you
  performed the following operation N times. In the i-th operation, you
  incremented the value of x by 1 if S_i=`I`, and decremented the value of x by
  1 if S_i=`D`.
  
  Find the maximum value taken by x during the operations (including before the
  first operation, and after the last operation).
samples: [{"input": "5\n    IIDID", "output": "2\n    \n\nAfter each operation, the value of x becomes 1, 2, 1, 2 and 1, respectively.\nThus, the output should be 2, the maximum value.\n\n* * *"}, {"input": "7\n    DDIDDII", "output": "0\n    \n\nThe initial value x=0 is the maximum value taken by x, thus the output should\nbe 0."}]