#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using vll = vector<ll>;
using vllvll = vector<vll>;
using pll = pair<ll, ll>;
template <class T>
void print1d(T x, ll n = -1) {
  if (n == -1) n = x.size();
  for (long long i = 0; i < n; ++i) {
    cout << x[i] << ' ';
  }
  cout << '\n';
}
template <class T>
void print2d(T x, ll r = -1, ll c = -1) {
  if (r == -1) r = x.size();
  if (c == -1) c = x[0].size();
  for (long long i = 0; i < r; ++i) print1d(x[i], c);
}
template <class T, class U>
bool haskey(T mp, U key) {
  return mp.find(key) != mp.end();
}
template <class T, class U>
bool isin(T el, U container) {
  return find((container).begin(), (container).end(), el) != container.end();
}
template <class T>
bool chmax(T& a, const T& b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool chmin(T& a, const T& b) {
  if (b < a) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool even(T n) {
  return !(n & 1);
}
template <class T>
bool odd(T n) {
  return n & 1;
}
template <class T>
ld deg2rad(T deg) {
  return M_PI * deg / 180.0;
}
template <class T>
ld rad2deg(T rad) {
  return 180.0 * rad / M_PI;
}
ll intpow(ll a, ll n) {
  ll p = 1;
  while (n) {
    if (n & 1) p *= a;
    a *= a;
    n >>= 1;
  }
  return p;
}
const long double pi = M_PI;
const long long big = 1LL << 50;
const long long inf = 1LL << 60;
const long long mod = 1e9 + 7;
std::vector<std::pair<char, long long> > runlength(std::string str) {
  std::vector<std::pair<char, long long> > enc;
  long long strsize = static_cast<long long>(str.size());
  char now = str[0];
  long long cnt = 0;
  for (long long i = 0; i < strsize; ++i) {
    if (str[i] == now) {
      ++cnt;
    } else {
      enc.push_back(std::pair<char, long long>(now, cnt));
      now = str[i];
      cnt = 1;
    }
  }
  enc.push_back(std::pair<char, long long>(now, cnt));
  return enc;
}
int main() {
  string S;
  cin >> S;
  auto v = runlength(S);
  cout << min(((long long)(S).size()), ((long long)(v).size()) + 1) << endl;
}
