import java.util.*;
import java.io.*;

class Main{
  static class Scnr{
    private final InputStream ins;
    private final byte[] buffer = new byte[1024];
    private int ptr = 0;
    private int buflen = 0;
    Scnr(){
      this(System.in);
    }
    Scnr(InputStream in){
      ins = in;
    }
    private boolean hasNextByte(){
      if(ptr<buflen){
        return true;
      }else{
        ptr = 0;
        try{
          buflen = ins.read(buffer);
        }catch(IOException e){
          e.printStackTrace();
        }
        if(buflen<=0){
          return false;
        }
      }
      return true;
    }
    private int readByte(){
      if(hasNextByte()){
        return buffer[ptr++];
      }else{
        return -1;
      }
    }
    private static boolean isPrintableChar(int c){
      return 33<=c&&c<=126;
    }
    public boolean hasNext(){
      while(hasNextByte()&&!isPrintableChar(buffer[ptr])){
        ptr++;
      }
      return hasNextByte();
    }
    public String next(){
      if(!hasNext()){
        throw new NoSuchElementException();
      }
      StringBuilder sb = new StringBuilder();
      int b = readByte();
      while(isPrintableChar(b)){
        sb.appendCodePoint(b);
        b = readByte();
      }
      return sb.toString();
    }
    public StringBuilder nextBuilder(){
      if(!hasNext()){
        throw new NoSuchElementException();
      }
      StringBuilder sb = new StringBuilder();
      int b = readByte();
      while(isPrintableChar(b)){
        sb.appendCodePoint(b);
        b = readByte();
      }
      return sb;
    }
    public double nextDouble(){
      return Double.parseDouble(next());
    }
    public long nextLong(){
      if(!hasNext()){
        throw new NoSuchElementException();
      }
      long n = 0;
      boolean minus = false;
      int b = readByte();
      if(b=='-'){
        minus=true;
        b=readByte();
      }
      if(b<'0'||'9'<b){
        throw new NumberFormatException();
      }
      while(true){
        if('0'<=b&&b<='9'){
          n*=10;
          n+=b-'0';
        }else if(b==-1||!isPrintableChar(b)){
          return minus?-n:n;
        }else{
          throw new NumberFormatException();
        }
        b=readByte();
      }
    }
    public int nextInt(){
      long nl=nextLong();
      if(nl<Integer.MIN_VALUE||Integer.MAX_VALUE<nl){
        throw new NumberFormatException();
      }
      return (int) nl;
    }
    public int[] nextAInt(int n){
      int[] a = new int[n];
      nextAInt(a,n);
      return a;
    }
    public void nextAInt(int[] a,int n){
      for(int i=0;i<n;i++){
        a[i] = nextInt();
      }
    }
    public long[] nextALong(int n){
      long[] a = new long[n];
      nextALong(a,n);
      return a;
    }
    public void nextALong(long[] a,int n){
      for(int i=0;i<n;i++){
        a[i] = nextLong();
      }
    }
    public double[] nextADouble(int n){
      double[] a = new double[n];
      for(int i=0;i<n;i++){
        a[i] = nextDouble();
      }
      return a;
    }
    public void nextADouble(double[] a,int n){
      for(int i=0;i<n;i++){
        a[i] = nextDouble();
      }
    }
  }
  
  static Scnr sc = new Scnr();
  static PrintWriter out = new PrintWriter(System.out);
  public static void main(String args[]){
    String s = sc.next();
    StringBuilder sb = new StringBuilder();
    for(int i=0;i<s.length();i++){
      if(s.charAt(i)=='0'){
        sb.append('0');
      }else if(s.charAt(i)=='1'){
        sb.append('1');
      }else{
        if(sb.length()>0){
          sb.deleteCharAt(sb.length()-1);
        }
      }
    }
    out.println(sb.toString());
    out.flush();
  }
} import java.util.*; util.* java import java.io.*; io.* java class Main{
  static class Scnr{
    private final InputStream ins;
    private final byte[] buffer = new byte[1024];
    private int ptr = 0;
    private int buflen = 0;
    Scnr(){
      this(System.in);
    }
    Scnr(InputStream in){
      ins = in;
    }
    private boolean hasNextByte(){
      if(ptr<buflen){
        return true;
      }else{
        ptr = 0;
        try{
          buflen = ins.read(buffer);
        }catch(IOException e){
          e.printStackTrace();
        }
        if(buflen<=0){
          return false;
        }
      }
      return true;
    }
    private int readByte(){
      if(hasNextByte()){
        return buffer[ptr++];
      }else{
        return -1;
      }
    }
    private static boolean isPrintableChar(int c){
      return 33<=c&&c<=126;
    }
    public boolean hasNext(){
      while(hasNextByte()&&!isPrintableChar(buffer[ptr])){
        ptr++;
      }
      return hasNextByte();
    }
    public String next(){
      if(!hasNext()){
        throw new NoSuchElementException();
      }
      StringBuilder sb = new StringBuilder();
      int b = readByte();
      while(isPrintableChar(b)){
        sb.appendCodePoint(b);
        b = readByte();
      }
      return sb.toString();
    }
    public StringBuilder nextBuilder(){
      if(!hasNext()){
        throw new NoSuchElementException();
      }
      StringBuilder sb = new StringBuilder();
      int b = readByte();
      while(isPrintableChar(b)){
        sb.appendCodePoint(b);
        b = readByte();
      }
      return sb;
    }
    public double nextDouble(){
      return Double.parseDouble(next());
    }
    public long nextLong(){
      if(!hasNext()){
        throw new NoSuchElementException();
      }
      long n = 0;
      boolean minus = false;
      int b = readByte();
      if(b=='-'){
        minus=true;
        b=readByte();
      }
      if(b<'0'||'9'<b){
        throw new NumberFormatException();
      }
      while(true){
        if('0'<=b&&b<='9'){
          n*=10;
          n+=b-'0';
        }else if(b==-1||!isPrintableChar(b)){
          return minus?-n:n;
        }else{
          throw new NumberFormatException();
        }
        b=readByte();
      }
    }
    public int nextInt(){
      long nl=nextLong();
      if(nl<Integer.MIN_VALUE||Integer.MAX_VALUE<nl){
        throw new NumberFormatException();
      }
      return (int) nl;
    }
    public int[] nextAInt(int n){
      int[] a = new int[n];
      nextAInt(a,n);
      return a;
    }
    public void nextAInt(int[] a,int n){
      for(int i=0;i<n;i++){
        a[i] = nextInt();
      }
    }
    public long[] nextALong(int n){
      long[] a = new long[n];
      nextALong(a,n);
      return a;
    }
    public void nextALong(long[] a,int n){
      for(int i=0;i<n;i++){
        a[i] = nextLong();
      }
    }
    public double[] nextADouble(int n){
      double[] a = new double[n];
      for(int i=0;i<n;i++){
        a[i] = nextDouble();
      }
      return a;
    }
    public void nextADouble(double[] a,int n){
      for(int i=0;i<n;i++){
        a[i] = nextDouble();
      }
    }
  }
  
  static Scnr sc = new Scnr();
  static PrintWriter out = new PrintWriter(System.out);
  public static void main(String args[]){
    String s = sc.next();
    StringBuilder sb = new StringBuilder();
    for(int i=0;i<s.length();i++){
      if(s.charAt(i)=='0'){
        sb.append('0');
      }else if(s.charAt(i)=='1'){
        sb.append('1');
      }else{
        if(sb.length()>0){
          sb.deleteCharAt(sb.length()-1);
        }
      }
    }
    out.println(sb.toString());
    out.flush();
  }
} Main static Scnr sc = new Scnr(); sc new Scnr() static PrintWriter out = new PrintWriter(System.out); out new PrintWriter(System.out) public static void main(String args[]){
    String s = sc.next();
    StringBuilder sb = new StringBuilder();
    for(int i=0;i<s.length();i++){
      if(s.charAt(i)=='0'){
        sb.append('0');
      }else if(s.charAt(i)=='1'){
        sb.append('1');
      }else{
        if(sb.length()>0){
          sb.deleteCharAt(sb.length()-1);
        }
      }
    }
    out.println(sb.toString());
    out.flush();
  } main {
    String s = sc.next();
    StringBuilder sb = new StringBuilder();
    for(int i=0;i<s.length();i++){
      if(s.charAt(i)=='0'){
        sb.append('0');
      }else if(s.charAt(i)=='1'){
        sb.append('1');
      }else{
        if(sb.length()>0){
          sb.deleteCharAt(sb.length()-1);
        }
      }
    }
    out.println(sb.toString());
    out.flush();
  } String s = sc.next(); s sc.next() sc.next sc StringBuilder sb = new StringBuilder(); sb new StringBuilder() for(int i=0;i<s.length();i++){
      if(s.charAt(i)=='0'){
        sb.append('0');
      }else if(s.charAt(i)=='1'){
        sb.append('1');
      }else{
        if(sb.length()>0){
          sb.deleteCharAt(sb.length()-1);
        }
      }
    } int i=0; int i=0; i 0 i<s.length() i s.length() s.length s i++ i++ i {
      if(s.charAt(i)=='0'){
        sb.append('0');
      }else if(s.charAt(i)=='1'){
        sb.append('1');
      }else{
        if(sb.length()>0){
          sb.deleteCharAt(sb.length()-1);
        }
      }
    } {
      if(s.charAt(i)=='0'){
        sb.append('0');
      }else if(s.charAt(i)=='1'){
        sb.append('1');
      }else{
        if(sb.length()>0){
          sb.deleteCharAt(sb.length()-1);
        }
      }
    } if(s.charAt(i)=='0'){
        sb.append('0');
      }else if(s.charAt(i)=='1'){
        sb.append('1');
      }else{
        if(sb.length()>0){
          sb.deleteCharAt(sb.length()-1);
        }
      } s.charAt(i)=='0' s.charAt(i) s.charAt s i '0' {
        sb.append('0');
      } sb.append('0') sb.append sb '0' if(s.charAt(i)=='1'){
        sb.append('1');
      }else{
        if(sb.length()>0){
          sb.deleteCharAt(sb.length()-1);
        }
      } s.charAt(i)=='1' s.charAt(i) s.charAt s i '1' {
        sb.append('1');
      } sb.append('1') sb.append sb '1' {
        if(sb.length()>0){
          sb.deleteCharAt(sb.length()-1);
        }
      } if(sb.length()>0){
          sb.deleteCharAt(sb.length()-1);
        } sb.length()>0 sb.length() sb.length sb 0 {
          sb.deleteCharAt(sb.length()-1);
        } sb.deleteCharAt(sb.length()-1) sb.deleteCharAt sb sb.length()-1 sb.length() sb.length sb 1 out.println(sb.toString()) out.println out sb.toString() sb.toString sb out.flush() out.flush out String args[] args static class Scnr{
    private final InputStream ins;
    private final byte[] buffer = new byte[1024];
    private int ptr = 0;
    private int buflen = 0;
    Scnr(){
      this(System.in);
    }
    Scnr(InputStream in){
      ins = in;
    }
    private boolean hasNextByte(){
      if(ptr<buflen){
        return true;
      }else{
        ptr = 0;
        try{
          buflen = ins.read(buffer);
        }catch(IOException e){
          e.printStackTrace();
        }
        if(buflen<=0){
          return false;
        }
      }
      return true;
    }
    private int readByte(){
      if(hasNextByte()){
        return buffer[ptr++];
      }else{
        return -1;
      }
    }
    private static boolean isPrintableChar(int c){
      return 33<=c&&c<=126;
    }
    public boolean hasNext(){
      while(hasNextByte()&&!isPrintableChar(buffer[ptr])){
        ptr++;
      }
      return hasNextByte();
    }
    public String next(){
      if(!hasNext()){
        throw new NoSuchElementException();
      }
      StringBuilder sb = new StringBuilder();
      int b = readByte();
      while(isPrintableChar(b)){
        sb.appendCodePoint(b);
        b = readByte();
      }
      return sb.toString();
    }
    public StringBuilder nextBuilder(){
      if(!hasNext()){
        throw new NoSuchElementException();
      }
      StringBuilder sb = new StringBuilder();
      int b = readByte();
      while(isPrintableChar(b)){
        sb.appendCodePoint(b);
        b = readByte();
      }
      return sb;
    }
    public double nextDouble(){
      return Double.parseDouble(next());
    }
    public long nextLong(){
      if(!hasNext()){
        throw new NoSuchElementException();
      }
      long n = 0;
      boolean minus = false;
      int b = readByte();
      if(b=='-'){
        minus=true;
        b=readByte();
      }
      if(b<'0'||'9'<b){
        throw new NumberFormatException();
      }
      while(true){
        if('0'<=b&&b<='9'){
          n*=10;
          n+=b-'0';
        }else if(b==-1||!isPrintableChar(b)){
          return minus?-n:n;
        }else{
          throw new NumberFormatException();
        }
        b=readByte();
      }
    }
    public int nextInt(){
      long nl=nextLong();
      if(nl<Integer.MIN_VALUE||Integer.MAX_VALUE<nl){
        throw new NumberFormatException();
      }
      return (int) nl;
    }
    public int[] nextAInt(int n){
      int[] a = new int[n];
      nextAInt(a,n);
      return a;
    }
    public void nextAInt(int[] a,int n){
      for(int i=0;i<n;i++){
        a[i] = nextInt();
      }
    }
    public long[] nextALong(int n){
      long[] a = new long[n];
      nextALong(a,n);
      return a;
    }
    public void nextALong(long[] a,int n){
      for(int i=0;i<n;i++){
        a[i] = nextLong();
      }
    }
    public double[] nextADouble(int n){
      double[] a = new double[n];
      for(int i=0;i<n;i++){
        a[i] = nextDouble();
      }
      return a;
    }
    public void nextADouble(double[] a,int n){
      for(int i=0;i<n;i++){
        a[i] = nextDouble();
      }
    }
  } Scnr private final InputStream ins; ins private final byte[] buffer = new byte[1024]; buffer new byte[1024] 1024 private int ptr = 0; ptr 0 private int buflen = 0; buflen 0 Scnr(){
      this(System.in);
    } Scnr {
      this(System.in);
    } this(System.in) this System.in System System.in Scnr(InputStream in){
      ins = in;
    } Scnr {
      ins = in;
    } ins = in ins in InputStream in in private boolean hasNextByte(){
      if(ptr<buflen){
        return true;
      }else{
        ptr = 0;
        try{
          buflen = ins.read(buffer);
        }catch(IOException e){
          e.printStackTrace();
        }
        if(buflen<=0){
          return false;
        }
      }
      return true;
    } hasNextByte {
      if(ptr<buflen){
        return true;
      }else{
        ptr = 0;
        try{
          buflen = ins.read(buffer);
        }catch(IOException e){
          e.printStackTrace();
        }
        if(buflen<=0){
          return false;
        }
      }
      return true;
    } if(ptr<buflen){
        return true;
      }else{
        ptr = 0;
        try{
          buflen = ins.read(buffer);
        }catch(IOException e){
          e.printStackTrace();
        }
        if(buflen<=0){
          return false;
        }
      } ptr<buflen ptr buflen {
        return true;
      } return true; true {
        ptr = 0;
        try{
          buflen = ins.read(buffer);
        }catch(IOException e){
          e.printStackTrace();
        }
        if(buflen<=0){
          return false;
        }
      } ptr = 0 ptr 0 try{
          buflen = ins.read(buffer);
        }catch(IOException e){
          e.printStackTrace();
        } catch(IOException e){
          e.printStackTrace();
        } IOException e {
          e.printStackTrace();
        } e.printStackTrace() e.printStackTrace e {
          buflen = ins.read(buffer);
        } buflen = ins.read(buffer) buflen ins.read(buffer) ins.read ins buffer if(buflen<=0){
          return false;
        } buflen<=0 buflen 0 {
          return false;
        } return false; false return true; true private int readByte(){
      if(hasNextByte()){
        return buffer[ptr++];
      }else{
        return -1;
      }
    } readByte {
      if(hasNextByte()){
        return buffer[ptr++];
      }else{
        return -1;
      }
    } if(hasNextByte()){
        return buffer[ptr++];
      }else{
        return -1;
      } hasNextByte() hasNextByte {
        return buffer[ptr++];
      } return buffer[ptr++]; buffer[ptr++] buffer ptr++ ptr {
        return -1;
      } return -1; -1 1 private static boolean isPrintableChar(int c){
      return 33<=c&&c<=126;
    } isPrintableChar {
      return 33<=c&&c<=126;
    } return 33<=c&&c<=126; 33<=c&&c<=126 33<=c 33 c c<=126 c 126 int c c public boolean hasNext(){
      while(hasNextByte()&&!isPrintableChar(buffer[ptr])){
        ptr++;
      }
      return hasNextByte();
    } hasNext {
      while(hasNextByte()&&!isPrintableChar(buffer[ptr])){
        ptr++;
      }
      return hasNextByte();
    } while(hasNextByte()&&!isPrintableChar(buffer[ptr])){
        ptr++;
      } hasNextByte()&&!isPrintableChar(buffer[ptr]) hasNextByte() hasNextByte !isPrintableChar(buffer[ptr]) isPrintableChar(buffer[ptr]) isPrintableChar buffer[ptr] buffer ptr {
        ptr++;
      } ptr++ ptr return hasNextByte(); hasNextByte() hasNextByte public String next(){
      if(!hasNext()){
        throw new NoSuchElementException();
      }
      StringBuilder sb = new StringBuilder();
      int b = readByte();
      while(isPrintableChar(b)){
        sb.appendCodePoint(b);
        b = readByte();
      }
      return sb.toString();
    } next {
      if(!hasNext()){
        throw new NoSuchElementException();
      }
      StringBuilder sb = new StringBuilder();
      int b = readByte();
      while(isPrintableChar(b)){
        sb.appendCodePoint(b);
        b = readByte();
      }
      return sb.toString();
    } if(!hasNext()){
        throw new NoSuchElementException();
      } !hasNext() hasNext() hasNext {
        throw new NoSuchElementException();
      } throw new NoSuchElementException(); new NoSuchElementException() StringBuilder sb = new StringBuilder(); sb new StringBuilder() int b = readByte(); b readByte() readByte while(isPrintableChar(b)){
        sb.appendCodePoint(b);
        b = readByte();
      } isPrintableChar(b) isPrintableChar b {
        sb.appendCodePoint(b);
        b = readByte();
      } sb.appendCodePoint(b) sb.appendCodePoint sb b b = readByte() b readByte() readByte return sb.toString(); sb.toString() sb.toString sb public StringBuilder nextBuilder(){
      if(!hasNext()){
        throw new NoSuchElementException();
      }
      StringBuilder sb = new StringBuilder();
      int b = readByte();
      while(isPrintableChar(b)){
        sb.appendCodePoint(b);
        b = readByte();
      }
      return sb;
    } nextBuilder {
      if(!hasNext()){
        throw new NoSuchElementException();
      }
      StringBuilder sb = new StringBuilder();
      int b = readByte();
      while(isPrintableChar(b)){
        sb.appendCodePoint(b);
        b = readByte();
      }
      return sb;
    } if(!hasNext()){
        throw new NoSuchElementException();
      } !hasNext() hasNext() hasNext {
        throw new NoSuchElementException();
      } throw new NoSuchElementException(); new NoSuchElementException() StringBuilder sb = new StringBuilder(); sb new StringBuilder() int b = readByte(); b readByte() readByte while(isPrintableChar(b)){
        sb.appendCodePoint(b);
        b = readByte();
      } isPrintableChar(b) isPrintableChar b {
        sb.appendCodePoint(b);
        b = readByte();
      } sb.appendCodePoint(b) sb.appendCodePoint sb b b = readByte() b readByte() readByte return sb; sb public double nextDouble(){
      return Double.parseDouble(next());
    } nextDouble {
      return Double.parseDouble(next());
    } return Double.parseDouble(next()); Double.parseDouble(next()) Double.parseDouble Double next() next public long nextLong(){
      if(!hasNext()){
        throw new NoSuchElementException();
      }
      long n = 0;
      boolean minus = false;
      int b = readByte();
      if(b=='-'){
        minus=true;
        b=readByte();
      }
      if(b<'0'||'9'<b){
        throw new NumberFormatException();
      }
      while(true){
        if('0'<=b&&b<='9'){
          n*=10;
          n+=b-'0';
        }else if(b==-1||!isPrintableChar(b)){
          return minus?-n:n;
        }else{
          throw new NumberFormatException();
        }
        b=readByte();
      }
    } nextLong {
      if(!hasNext()){
        throw new NoSuchElementException();
      }
      long n = 0;
      boolean minus = false;
      int b = readByte();
      if(b=='-'){
        minus=true;
        b=readByte();
      }
      if(b<'0'||'9'<b){
        throw new NumberFormatException();
      }
      while(true){
        if('0'<=b&&b<='9'){
          n*=10;
          n+=b-'0';
        }else if(b==-1||!isPrintableChar(b)){
          return minus?-n:n;
        }else{
          throw new NumberFormatException();
        }
        b=readByte();
      }
    } if(!hasNext()){
        throw new NoSuchElementException();
      } !hasNext() hasNext() hasNext {
        throw new NoSuchElementException();
      } throw new NoSuchElementException(); new NoSuchElementException() long n = 0; n 0 boolean minus = false; minus false int b = readByte(); b readByte() readByte if(b=='-'){
        minus=true;
        b=readByte();
      } b=='-' b '-' {
        minus=true;
        b=readByte();
      } minus=true minus true b=readByte() b readByte() readByte if(b<'0'||'9'<b){
        throw new NumberFormatException();
      } b<'0'||'9'<b b<'0' b '0' '9'<b '9' b {
        throw new NumberFormatException();
      } throw new NumberFormatException(); new NumberFormatException() while(true){
        if('0'<=b&&b<='9'){
          n*=10;
          n+=b-'0';
        }else if(b==-1||!isPrintableChar(b)){
          return minus?-n:n;
        }else{
          throw new NumberFormatException();
        }
        b=readByte();
      } true {
        if('0'<=b&&b<='9'){
          n*=10;
          n+=b-'0';
        }else if(b==-1||!isPrintableChar(b)){
          return minus?-n:n;
        }else{
          throw new NumberFormatException();
        }
        b=readByte();
      } if('0'<=b&&b<='9'){
          n*=10;
          n+=b-'0';
        }else if(b==-1||!isPrintableChar(b)){
          return minus?-n:n;
        }else{
          throw new NumberFormatException();
        } '0'<=b&&b<='9' '0'<=b '0' b b<='9' b '9' {
          n*=10;
          n+=b-'0';
        } n*=10 n 10 n+=b-'0' n b-'0' b '0' if(b==-1||!isPrintableChar(b)){
          return minus?-n:n;
        }else{
          throw new NumberFormatException();
        } b==-1||!isPrintableChar(b) b==-1 b -1 1 !isPrintableChar(b) isPrintableChar(b) isPrintableChar b {
          return minus?-n:n;
        } return minus?-n:n; minus?-n:n minus -n n n {
          throw new NumberFormatException();
        } throw new NumberFormatException(); new NumberFormatException() b=readByte() b readByte() readByte public int nextInt(){
      long nl=nextLong();
      if(nl<Integer.MIN_VALUE||Integer.MAX_VALUE<nl){
        throw new NumberFormatException();
      }
      return (int) nl;
    } nextInt {
      long nl=nextLong();
      if(nl<Integer.MIN_VALUE||Integer.MAX_VALUE<nl){
        throw new NumberFormatException();
      }
      return (int) nl;
    } long nl=nextLong(); nl nextLong() nextLong if(nl<Integer.MIN_VALUE||Integer.MAX_VALUE<nl){
        throw new NumberFormatException();
      } nl<Integer.MIN_VALUE||Integer.MAX_VALUE<nl nl<Integer.MIN_VALUE nl Integer.MIN_VALUE Integer Integer.MIN_VALUE Integer.MAX_VALUE<nl Integer.MAX_VALUE Integer Integer.MAX_VALUE nl {
        throw new NumberFormatException();
      } throw new NumberFormatException(); new NumberFormatException() return (int) nl; (int) nl public int[] nextAInt(int n){
      int[] a = new int[n];
      nextAInt(a,n);
      return a;
    } nextAInt {
      int[] a = new int[n];
      nextAInt(a,n);
      return a;
    } int[] a = new int[n]; a new int[n] n nextAInt(a,n) nextAInt a n return a; a int n n public void nextAInt(int[] a,int n){
      for(int i=0;i<n;i++){
        a[i] = nextInt();
      }
    } nextAInt {
      for(int i=0;i<n;i++){
        a[i] = nextInt();
      }
    } for(int i=0;i<n;i++){
        a[i] = nextInt();
      } int i=0; int i=0; i 0 i<n i n i++ i++ i {
        a[i] = nextInt();
      } {
        a[i] = nextInt();
      } a[i] = nextInt() a[i] a i nextInt() nextInt int[] a a int n n public long[] nextALong(int n){
      long[] a = new long[n];
      nextALong(a,n);
      return a;
    } nextALong {
      long[] a = new long[n];
      nextALong(a,n);
      return a;
    } long[] a = new long[n]; a new long[n] n nextALong(a,n) nextALong a n return a; a int n n public void nextALong(long[] a,int n){
      for(int i=0;i<n;i++){
        a[i] = nextLong();
      }
    } nextALong {
      for(int i=0;i<n;i++){
        a[i] = nextLong();
      }
    } for(int i=0;i<n;i++){
        a[i] = nextLong();
      } int i=0; int i=0; i 0 i<n i n i++ i++ i {
        a[i] = nextLong();
      } {
        a[i] = nextLong();
      } a[i] = nextLong() a[i] a i nextLong() nextLong long[] a a int n n public double[] nextADouble(int n){
      double[] a = new double[n];
      for(int i=0;i<n;i++){
        a[i] = nextDouble();
      }
      return a;
    } nextADouble {
      double[] a = new double[n];
      for(int i=0;i<n;i++){
        a[i] = nextDouble();
      }
      return a;
    } double[] a = new double[n]; a new double[n] n for(int i=0;i<n;i++){
        a[i] = nextDouble();
      } int i=0; int i=0; i 0 i<n i n i++ i++ i {
        a[i] = nextDouble();
      } {
        a[i] = nextDouble();
      } a[i] = nextDouble() a[i] a i nextDouble() nextDouble return a; a int n n public void nextADouble(double[] a,int n){
      for(int i=0;i<n;i++){
        a[i] = nextDouble();
      }
    } nextADouble {
      for(int i=0;i<n;i++){
        a[i] = nextDouble();
      }
    } for(int i=0;i<n;i++){
        a[i] = nextDouble();
      } int i=0; int i=0; i 0 i<n i n i++ i++ i {
        a[i] = nextDouble();
      } {
        a[i] = nextDouble();
      } a[i] = nextDouble() a[i] a i nextDouble() nextDouble double[] a a int n n
import java.util.*;
import java.io.*;

class Main{
  static class Scnr{
    private final InputStream ins;
    private final byte[] buffer = new byte[1024];
    private int ptr = 0;
    private int buflen = 0;
    Scnr(){
      this(System.in);
    }
    Scnr(InputStream in){
      ins = in;
    }
    private boolean hasNextByte(){
      if(ptr<buflen){
        return true;
      }else{
        ptr = 0;
        try{
          buflen = ins.read(buffer);
        }catch(IOException e){
          e.printStackTrace();
        }
        if(buflen<=0){
          return false;
        }
      }
      return true;
    }
    private int readByte(){
      if(hasNextByte()){
        return buffer[ptr++];
      }else{
        return -1;
      }
    }
    private static boolean isPrintableChar(int c){
      return 33<=c&&c<=126;
    }
    public boolean hasNext(){
      while(hasNextByte()&&!isPrintableChar(buffer[ptr])){
        ptr++;
      }
      return hasNextByte();
    }
    public String next(){
      if(!hasNext()){
        throw new NoSuchElementException();
      }
      StringBuilder sb = new StringBuilder();
      int b = readByte();
      while(isPrintableChar(b)){
        sb.appendCodePoint(b);
        b = readByte();
      }
      return sb.toString();
    }
    public StringBuilder nextBuilder(){
      if(!hasNext()){
        throw new NoSuchElementException();
      }
      StringBuilder sb = new StringBuilder();
      int b = readByte();
      while(isPrintableChar(b)){
        sb.appendCodePoint(b);
        b = readByte();
      }
      return sb;
    }
    public double nextDouble(){
      return Double.parseDouble(next());
    }
    public long nextLong(){
      if(!hasNext()){
        throw new NoSuchElementException();
      }
      long n = 0;
      boolean minus = false;
      int b = readByte();
      if(b=='-'){
        minus=true;
        b=readByte();
      }
      if(b<'0'||'9'<b){
        throw new NumberFormatException();
      }
      while(true){
        if('0'<=b&&b<='9'){
          n*=10;
          n+=b-'0';
        }else if(b==-1||!isPrintableChar(b)){
          return minus?-n:n;
        }else{
          throw new NumberFormatException();
        }
        b=readByte();
      }
    }
    public int nextInt(){
      long nl=nextLong();
      if(nl<Integer.MIN_VALUE||Integer.MAX_VALUE<nl){
        throw new NumberFormatException();
      }
      return (int) nl;
    }
    public int[] nextAInt(int n){
      int[] a = new int[n];
      nextAInt(a,n);
      return a;
    }
    public void nextAInt(int[] a,int n){
      for(int i=0;i<n;i++){
        a[i] = nextInt();
      }
    }
    public long[] nextALong(int n){
      long[] a = new long[n];
      nextALong(a,n);
      return a;
    }
    public void nextALong(long[] a,int n){
      for(int i=0;i<n;i++){
        a[i] = nextLong();
      }
    }
    public double[] nextADouble(int n){
      double[] a = new double[n];
      for(int i=0;i<n;i++){
        a[i] = nextDouble();
      }
      return a;
    }
    public void nextADouble(double[] a,int n){
      for(int i=0;i<n;i++){
        a[i] = nextDouble();
      }
    }
  }
  
  static Scnr sc = new Scnr();
  static PrintWriter out = new PrintWriter(System.out);
  public static void main(String args[]){
    String s = sc.next();
    StringBuilder sb = new StringBuilder();
    for(int i=0;i<s.length();i++){
      if(s.charAt(i)=='0'){
        sb.append('0');
      }else if(s.charAt(i)=='1'){
        sb.append('1');
      }else{
        if(sb.length()>0){
          sb.deleteCharAt(sb.length()-1);
        }
      }
    }
    out.println(sb.toString());
    out.flush();
  }
}