Problem:
Score : 200 points

Problem 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).

Constraints

1≤N≤100

|S|=N

No characters except I and D occur in S.

Input

The input is given from Standard Input in the following format:

N
S

Output

Print the maximum value taken by x during the operations.

Sample Input 1

5
IIDID

Sample Output 1

2

After each operation, the value of x becomes 1, 2, 1, 2 and 1, respectively. Thus, the output should be 2, the maximum value.

Sample Input 2

7
DDIDDII

Sample Output 2

0

The initial value x=0 is the maximum value taken by x, thus the output should be 0.

Solution in Ruby (2.3.3) (judge verdict: Accepted)

# あなたは整数 x を持っています。最初、x=0 です。
# あなたは、長さ N の文字列 S をもらったので、
# これを使って N 回の操作を行いました。 
# i 回目の操作では、Si=I ならば x の値を 1 増やし、
# Si=D ならば x の値を 1 減らしました。
# 操作の途中( 1 回目の操作の前、N 回目の操作の後も含む)で 
# x がとる値の最大値を答えてください。

# 情報を準備、取得
x = 0
n = gets.chomp.to_i
s = gets.chomp

# それぞれの操作ごとのxの状態を格納する配列を宣言
state = [x]

# 操作を実行
n.times do |i|
  case s[i]
  when "I"
    x += 1
  when "D"
    x -= 1
  end
  
  state << x
end

# 結果を出力
puts state.sort.last