#include <bits/stdc++.h>
using namespace std;
typedef long long lint;
#define rep(i,n) for(lint (i)=0;(i)<(n);(i)++)
#define repp(i,m,n) for(lint (i)=(m);(i)<(n);(i)++)
#define repm(i,n) for(lint (i)=(n-1);(i)>=0;(i)--)
#define INF (1ll<<60)
#define all(x) (x).begin(),(x).end()
const lint MOD =1000000007;
//const lint MOD=998244353;
const lint MAX = 4000000;
using Graph =vector<vector<lint>>;
typedef pair<lint,lint> P;
typedef map<lint,lint> M;
#pragma GCC optimize("Ofast")
#define chmax(x,y) x=max(x,y)
#define chmin(x,y) x=min(x,y)
 
 
lint fac[MAX], finv[MAX], inv[MAX];
 
void COMinit() 
{
    fac[0] = fac[1] = 1;
    finv[0] = finv[1] = 1;
    inv[1] = 1;
    for (lint i = 2; i < MAX; i++)
    {
        fac[i] = fac[i - 1] * i % MOD;
        inv[i] = MOD - inv[MOD % i] * (MOD / i) % MOD;
        finv[i] = finv[i - 1] * inv[i] % MOD;
    }
}
 
long long COM(lint n, lint k)
{
    if (n < k)
        return 0;
    if (n < 0 || k < 0)
        return 0;
    return fac[n] * (finv[k] * finv[n - k] % MOD) % MOD;
}
 
lint primary(lint num)
{
    if (num < 2) return 0;
    else if (num == 2) return 1;
    else if (num % 2 == 0) return 0;
 
    double sqrtNum = sqrt(num);
    for (int i = 3; i <= sqrtNum; i += 2)
    {
        if (num % i == 0)
        {
            return 0;
        }
    }
 
    return 1;
}
   long long modpow(long long a, long long n, long long mod) {
    long long res = 1;
    while (n > 0) {
        if (n & 1) res = res * a % mod;
        a = a * a % mod;
        n >>= 1;
    }
    return res;
}
    lint lcm(lint a,lint b){
        return a/__gcd(a,b)*b;
    }
     lint gcd(lint a,lint b){
        return __gcd(a,b);
    }


    int main(){
        string s;
        cin>>s;
        bool isrev=false;
        deque<char> que;
        rep(i,s.size()){
            if(s[i]=='R'){
                if(isrev)isrev=false;
                else isrev=true;
            }else{
                if(que.empty())que.push_front(s[i]);
                else if(isrev){
                    char t=que.front();
                    if(t==s[i])que.pop_front();
                    else que.push_front(s[i]);
                }else{
                    char t=que.back();
                    if(t==s[i])que.pop_back();
                    else que.push_back(s[i]);
                }
            }
        }
        lint g=que.size();
        if(isrev){
            rep(i,g){
                cout<<que.back();
                que.pop_back();
            }
        }else{
            rep(i,g){
                cout<<que.front();
                que.pop_front();
            }
        }
        cout<<endl;




        }
        
       


    

      
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int main(void) 
{
      vector<int> vDice(3);
      for (int i = 0; i < 3; i++)
      {
          cin >> vDice.at(i);
      }
      vector<int> vFind(6);
      for (int i = 0; i < 6; i++)
      {
          std::vector<int>::iterator itr;
          size_t n_count = std::count(vDice.begin(), vDice.end(), i+1);
          vFind.at(i) = n_count;
      }
    
      size_t count = std::count(vFind.begin(), vFind.end(), 1);

      if (count == 3)
      {
          cout << 0 << endl;
      }
      else
      {
          for (int i = 0; i < 6; i++)
          {
              if (vFind.at(i) != 0 && vFind.at(i) != 2)
              {
                  cout << i + 1 << endl;
                  break;
              }
          }
      }
}