e953986b9b2275ef23f15bcf9368b1ca7ad1e69ef08db22d3aa6985e5133a5bd
// https://szkopul.edu.pl/problemset/problem/xB0uOrHG0vxqYqG2Y-Nhjlzu/site/?key=statement
#include <iostream>
#include <vector>
constexpr int sizik = 1000 * 1001;
int group[sizik];
bool skip[sizik];
int convert(bool flag) {
return flag ? '+' : '-';
}
int main() {
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
std::string s;
std::cin >> s;
s += "?";
int i = 0, group_num = 1;
while (i < s.size()) {
if (s[i] == '+') {
int count = 1;
while (s[i + 1] == '+') {
i++;
count++;
}
group[group_num] += count;
} else if (s[i] == '-') {
int count = 1;
while (s[i + 1] == '-') {
i++;
count++;
}
if (count % 2 == 0) {
group[group_num] += count / 2;
} else {
group[++group_num] = count / 2;
skip[group_num] = true;
group_num++;
}
}
i++;
}
int ans = 0;
for (int i = 1; i <= group_num; i++) {
if (skip[i]) {
continue;
} else {
ans = std::max(ans, group[i - 1] + group[i] + group[i + 1]);
}
}
std::cout << ans << '\n';
return 0;
}