5928: Antichain

内存限制:256 MB 时间限制:2 S 标准输入输出
题目类型:传统 评测方式:文本比较 上传者:
提交:1 通过:1

题目描述

E. Antichain
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
You have a directed acyclic graph G, consisting of n vertexes, numbered from 0 to n-1. The graph contains n edges numbered from 0 to n-1. An edge with number i connects vertexes i and (i+1)modn, and it can be directed in either direction (from i to (i+1)modn, or vise versa).
Operation xmody means taking the remainder after dividing number x by number y.
Let's call two vertexes u and v in graph G comparable if the graph contains a path either from u to v or from v to u. We'll assume that an antichain is a set of vertexes of graph G, where any two distinct vertexes are not comparable. The size of an antichain is the number of vertexes in the corresponding set. An antichain is maximum if the graph doesn't have antichains of a larger size.
Your task is to find the size of the maximum antichain in graph G.
Input
The first line contains the sequence of characters s0s1... sn-1 (2≤n≤106), consisting of numbers zero and one. The length of the line (number n) corresponds to the number of vertexes and edges in graph G. If character si (i≥0) equals 0, then the edge between vertexes i and (i+1)modn is directed from the i-th vertex to the (i+1)modn-th one, otherwise − to the opposite point.
It is guaranteed that the given graph is acyclic.
Output
Print a single integer − the size of the maximum antichain of graph G.
Examples
Input
001
Output
1
Input
110010
Output
3
Note
Consider the first test sample. The graph's G edges are: 0→1, 1→2, 0→2. We can choose the set of vertexes [0] as the maximum antichain. We cannot choose an antichain of larger size.

输入样例 复制


输出样例 复制