Problem:
Score : 100 points

Problem Statement

We have weather records at AtCoder Town for some consecutive three days. A string of length 3, S, represents the records - if the i-th character is S, it means it was sunny on the i-th day; if that character is R, it means it was rainy on that day.

Find the maximum number of consecutive rainy days in this period.

Constraints

|S| = 3

Each character of S is S or R.

Input

Input is given from Standard Input in the following format:

S

Output

Print the maximum number of consecutive rainy days in the period.

Sample Input 1

RRS

Sample Output 1

2

We had rain on the 1-st and 2-nd days in the period. Here, the maximum number of consecutive rainy days is 2, so we should print 2.

Sample Input 2

SSS

Sample Output 2

0

It was sunny throughout the period. We had no rainy days, so we should print 0.

Sample Input 3

RSR

Sample Output 3

1

We had rain on the 1-st and 3-rd days - two "streaks" of one rainy day, so we should print 1.

Solution in Rust (1.42.0) (judge verdict: Accepted)

// #![allow(unused_mut)]
#![allow(dead_code)]
#![allow(unused_macros)]

use proconio::{input};

// The debug version
#[cfg(feature = "debug")]
macro_rules! debug {
       ($( $args:expr ),*) => { println!( $( $args ),* ); }
}
// Non-debug version
#[cfg(not(feature = "debug"))]
macro_rules! debug {
       ($( $args:expr ),*) => {}
}


use num_traits::int::PrimInt;
// #[overflow_checks(off)]
// i32 -> i32, i64 -> i64
fn accum<T: PrimInt>(a: &Vec<T>) -> Vec<T> {
    let n: usize = a.len();
    let mut ac: Vec<T> = Vec::with_capacity(n + 1);
    ac.push(a[0] - a[0]);  // ac.push(0) がしたいんですけど
    for i in 0..n {
        ac.push(ac[i] + a[i]);
    }
    ac
}
/// i32 -> i64
fn accum64(a: &Vec<i32>) -> Vec<i64> {
    let n: usize = a.len();
    let mut ac: Vec<i64> = Vec::with_capacity(n + 1);
    ac.push(0);
    for i in 0..n {
        ac.push(ac[i] + i64::from(a[i]));
    }
    ac
}

fn rle<T: PrimInt>(a: &Vec<T>) -> Vec<(T,u32)> {
    let mut res: Vec<(T,u32)> = Vec::with_capacity(0);

    let mut last : T = T::zero();
    let mut cnt : u32 = 0;

    for c in a.iter() {
        if *c == last {
            cnt += 1;
        } else {
            if cnt > 0 {
                res.push((last, cnt));
            }
            last = *c;
            cnt = 1;
        }
    };
    if cnt > 0 {
        res.push((last, cnt));
    }
    res
}
fn rle_str(a: &str) -> Vec<(char,u32)> {
    let mut res: Vec<(char,u32)> = Vec::with_capacity(0);

    let mut last : char = '\0';
    let mut cnt : u32 = 0;

    for c in a.chars() {
        if c == last {
            cnt += 1;
        } else {
            if cnt > 0 {
                res.push((last, cnt));
            }
            last = c;
            cnt = 1;
        }
    };
    if cnt > 0 {
        res.push((last, cnt));
    }
    res
}

fn yesno(b: bool) -> &'static str {
    if b {
        return "Yes";
    } else {
        return "No";
    }
}

fn solve(s: String) -> u32 {
    let r = rle_str(&s);
    let mut res: u32 = 0;
    for (ch, cnt) in r {
        if ch == 'R' {
            res = core::cmp::max(res, cnt);
        }
    };
    res
}

fn main() {
    input! {
        s: String,
    }

    let ans: u32 = solve(s);
    println!("{}", ans);
}