Description
Polycarpus just has been out of luck lately! As soon as he found a job in the "Binary Cat" cafe, the club got burgled. All ice-cream was stolen.
On the burglary night Polycarpus kept a careful record of all club visitors. Each time a visitor entered the club, Polycarpus put down character "+" in his notes. Similarly, each time a visitor left the club, Polycarpus put character "-" in his notes. We know that all cases of going in and out happened consecutively, that is, no two events happened at the same time. Polycarpus doesn't remember whether there was somebody in the club at the moment when his shift begun and at the moment when it ended.
Right now the police wonders what minimum number of distinct people Polycarpus could have seen. Assume that he sees anybody coming in or out of the club. Each person could have come in or out an arbitrary number of times.
Input
The only line of the input contains a sequence of characters "+" and "-", the characters are written one after another without any separators. The characters are written in the order, in which the corresponding events occurred. The given sequence has length from 1 to 300 characters, inclusive.
Output
Print the sought minimum number of people
Sample Input
+-+-+
1
---
3
/*此题要求看过的最少人数。如果看到之前看到人进去,现在看到人出去。那么就把他当做之前看过进去的人
如果之前看到人出去,现在又看到人进去,也把他们当做同一个人。此题转换为根据我做的进出记录,同时在商店
中的最大人数*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
char A[308];
int main()
{
while(cin>>A)
{
int len=strlen(A);
int in=0,out=0,sum=0;
for(int i=0;i<len;i++)
{
if(A[i]=='+')
{
in++;
if(out) out--;
else sum++;
}
else
{
out++;
if(in) in--;
else sum++;
}
}
cout<<sum<<endl;
}
return 0;
}