#include <bits/stdc++.h>

#define rep(i,n) for(int i=0; i<(n); i++)

using namespace std;
typedef long long ll;
typedef pair<int,int> P;
const int MOD = 1e9 + 7;


int main(){
    string s; cin >> s;
    deque<char> t;
    int r = 0;
    for(char c : s){
        if(c == 'R') r = 1 - r;
        else {
            if(r == 0) t.push_back(c);
            else t.push_front(c); 
        }
    }
    if(r == 1) reverse(t.begin(),t.end());
    string S;
    for(char c : t) {
        if(S.back() != c) S.push_back(c);
        else S.pop_back();
    }

    
    cout << S << endl;


    return 0;
}

#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <cmath>
#include <map>
#include <queue>
#include <iomanip>
#include <set>
#include <tuple>
#include <stack>
#define mkp make_pair
#define mkt make_tuple
#define rep(i,n) for(int i = 0; i < (n); ++i)
#define all(v) v.begin(),v.end()
using namespace std;
typedef long long ll;
const ll MOD=1e9+7;
template<class T> void chmin(T &a,const T &b){if(a>b) a=b;}
template<class T> void chmax(T &a,const T &b){if(a<b) a=b;}

int main(){
  cin.tie(0);
  ios::sync_with_stdio(false);

  string S;
  cin>>S;
  int N=S.size();

  deque<char> DQ;
  bool rev=false;
  rep(i,N){
    if(S[i]=='R'){
      rev^=true;
    }else{
      if(rev) DQ.push_front(S[i]);
      else DQ.push_back(S[i]);
    }
  }

  string T="";
  while(!DQ.empty()){
    if(rev){
      T+=DQ.back();
      DQ.pop_back();
    }else{
      T+=DQ.front();
      DQ.pop_front();
    }
  }

  string ans="";
  stack<char> st;
  rep(i,T.size()){
    if(st.empty()) st.push(T[i]);
    else{
      if(st.top()==T[i]){
        st.pop();
      }else{
        st.push(T[i]);
      }
    }
  }
  while(!st.empty()){
    ans+=st.top();
    st.pop();
  }
  reverse(all(ans));
  cout<<ans<<endl;

  return 0;
}
