###这种动态更新的精髓在于,按照要求对于R从左边更新,但是记录这个更新次数的数组的维度需要比原字符串的维度大1,因为在最开始或者最后的0代表着开始,那么针对第一个字符元素,字符是[0]
但是记录的次数的这个数组就是[1]了。
###这里不能使用numpy库,否则可以使用arrR=np.zeros(n+1),但是一定要注意利用np.zeros创建的0数组是一个array格式,并且这个数值是float形式。0.0 
def color_count(str):
    
    n=len(str)
    arrR=[0]*(n+1)
    arrG=[0]*(n+1)
    for i in range(n):
        if str[i]=='R':
            arrR[i+1]=arrR[i]
        else:
            arrR[i+1]=arrR[i]+1
    for j in range(n-1,-1,-1):
        if str[j]=='G':
            arrG[j]=arrG[j+1]
        else:
            arrG[j]=arrG[j+1]+1
    min_count=n ###这个就是首先给定一个初始值,就是全部都要变,给定一个n
    # 最优解肯定是最在一个分界点使得左边都是R右边都是G
    # 遍历分割点
    for i in range(n+1):
        count=arrR[i]+arrG[i]
        min_count=min(min_count,count)
    return min_count
import sys
str=input()
print(int(color_count(str)))