#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define INF 1e9
#define PI 3.14159265359
#define MOD 1000000007
#define ALL(v) v.begin(),v.end()
#define ALLR(v) v.rbegin(),v.rend()
#define F first
#define S second
typedef long long ll;
const int dx[4] = {1,0,-1,0};
const int dy[4] = {0,1,0,-1};
//isPrime
//modpow modinv
//getDigit
template<class T> inline bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template<class T> inline bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
int main() {
  cout << fixed << setprecision(10);
  string s;
  cin >> s;
  string f,b;
  int m;

  bool r = false;
  rep(i,s.size()){
    if(s[i]=='R'){
      r = !r;
      continue;
    }
    if(!r){
      b.push_back(s[i]);
      m = b.size();
      if(b[m-2]==b[m-1]){
        b = b.erase(m-2);
      }
    }else{
      f.push_back(s[i]);
      m = f.size();
      if(f[m-2]==f[m-1]){
        f = f.erase(m-2);
      }
    }
  }
  int ans = 0;
  rep(i,min(b.size(),f.size())){
    if(b[i]==f[i]){
      ans = i;
    }else{
      break;
    }
  }
  b = b.substr(ans);
  f = f.substr(ans);
  string t;
  if(!r){
    reverse(ALL(f));
    t = f+b;
  }else{
    reverse(ALL(b));
    t = b + f;
  }
  //cout << t << endl;
  bool a = true;
 while(a){
   a = false;
   for(int i = 0; i+1 < t.size(); i++){
     if(t[i]==t[i+1]){
       a = true;
       t = t.erase(i,2);
     }
   }
 }
  cout << t << endl;
}

#include <algorithm>
#include <cstdio>
#include <iostream>
#include <vector>
#include <functional>
#include <queue>
using namespace std;
typedef long long ll;
using pii =  pair<int, int>;


int main(){

    string s;
    cin >> s;
    int n = s.length();
    // vector<string> res;
    // int p = 0;
    // for (int i = 0; i < n; ++i){
    //     if(s[i] == 'R'){
    //         string t = s.substr(p, i - p);
    //         reverse(t.begin(), t.end());
    //         res.push_back(t);
    //         p = i + 1;
    //     }
    // }
    // string t = s.substr(p, n);
    // res.push_back(t);

    // for(const auto& x : res)
    //     cout << x << endl;
    deque<char> res;
    int op = 0;
    for (int i = 0; i < n; ++i){
        if(s[i] == 'R'){
            op ^= 1;
            
        }else{
            if(!op){
                if(!res.empty() && res.back() == s[i]){
                    res.pop_back();
                }else
                    res.push_back(s[i]);
            }else{
                if(!res.empty() && res.front() == s[i]){
                    res.pop_front();
                }else
                    res.push_front(s[i]);
            }
        }
        
    }
    string ans;
    for(const auto&c : res)
        ans += c;
    if(op)
        reverse(ans.begin(), ans.end());
    cout << ans;
    return 0;
}

