#include<iostream>
using namespace std;
int n, res;
string s, p;
int main()
{
cin >> s;
for (int i = 0; i < s.size(); i++) { //1.把连续一样的字符缩成一个字符
char cur = s[i];
if (i == 0) {
p.push_back(cur);
}
else if (cur != p[p.size() - 1]) {
p.push_back(cur);
}
}
if (p.size() == 1) {
res = 1;
cout << res << endl;
return 0;
}
s.clear();
for (int i = 0; i < p.size(); i++) { //2 s 代表当前刷成的样子 p代表模板 目标的字符串
s.push_back(' ');
}
for (int i = 0; i < p.size(); i++) { //3.从左到右依次去刷,从i开始往后刷,贪心刷到第id个字符,全部刷成p[i];
if (p[i] == s[i]) continue;
else {
int cnt = 1, maxid = 1, id = i;
for (int j = i + 1; j < p.size(); j++) {
char pc = p[j];
char sc = s[j];
if (pc == sc && pc != p[i]) {
cnt--;
}
else if (pc != sc && pc == p[i]) {
cnt++;
if (cnt > maxid) {
maxid = cnt;
id = j;
}
}
}
for (int k = i; k <= id; k++) {
s[k] = p[i];
}
res++;
}
}
cout << res << endl;
return 0;
}