import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

/**
 * LongLongStrings
 * 
 * @author zeil
 *
 */
public class LongLongStrings_sjz {
	
	private Scanner input;

	
	public LongLongStrings_sjz(Scanner scanIn) {
		input = scanIn;
	}

	public static void solve(BufferedReader input) throws IOException {
		Scanner scanIn = new Scanner(input);
		new LongLongStrings_sjz(scanIn).solve();
	}
	
	public class Script {
		public LinkedList<Edit> script;
		
		public Script () {
			script = new LinkedList<>();
		}
		
		/**
		 * Insert an edit in a "normalized" order:
		 * 1) All deletions before any insertions.
		 * 2) Deletions ordered by non-decreasing order of position
		 * 3) Insertions ordered by non-decreasing order of position.
		 */
		public void add (Edit e) {
			ListIterator<Edit> it = script.listIterator(script.size());
			while (it.hasPrevious()) {
				Edit prev = it.previous();
				if (e.insert) {
					if (!prev.insert) {
						it.add(e);
						return;
					} else if (e.pos > prev.pos) {
						it.next();
						it.add(e);
						return;
					} else {
						prev.pos++;
					}
				} else {
					if (prev.insert && prev.pos == e.pos) {
						it.remove();
						return;
					} else if (prev.insert) {
						if (prev.pos > e.pos)
							prev.pos--;
						else
							e.pos--;
					} else if (e.pos > prev.pos) {
						it.next();
						it.add(e);
						return;
					} else {
						prev.pos--;
					}
				}
			}
			script.addFirst(e);
		}
		
		public boolean equals (Object obj) {
			if (obj instanceof Script) {
				Script s = (Script)obj;
				if (script.size() == s.script.size()) {
					Iterator<Edit> i1 = script.iterator();
					Iterator<Edit> i2 = s.script.iterator();
					while (i1.hasNext()) {
						Edit e1 = i1.next();
						Edit e2 = i2.next();
						if (!e1.equals(e2)) {
							return false;
						}
					}
					return true;
				} else {
					return false;
				}
			} else {
				return false;
			}
		}
		
		public String toString() {
			StringBuffer buf = new StringBuffer();
			buf.append("[");
			boolean first = true;
			for (Edit e: script) {
				if (!first) {
					buf.append(", ");
				}
				buf.append(e.toString());
				first = false;
			}
			buf.append("]");
			return buf.toString();
		}
	}
	

	private void solve() {
		Script script1 = new Script();
		Edit e = Edit.next(input);
		while (e != null) {
			script1.add(e);
			e = Edit.next(input);
		}
		Script script2 = new Script();
		e = Edit.next(input);
		while (e != null) {
			script2.add(e);
			e = Edit.next(input);
		}
		if (script1.equals(script2)) {
			System.out.println("0");
		} else {
			System.out.println ("1");
		}
		
	}

	public static void main(String[] args) throws FileNotFoundException, IOException {
		if (args.length > 0) {
			try (BufferedReader input 
					= new BufferedReader(new FileReader(args[0])))
			{
				solve(input);
			}
		} else {
			BufferedReader input 
			    = new BufferedReader (new InputStreamReader(System.in));
			solve(input);
		}
	}
	
	
	public static class Edit {
		boolean insert;
		long pos;
		char c; 
		
		
		public Edit () {
			insert = true;
			pos = 0;
			this.c = ' ';
		}

		public String toString()
		{
			if (insert)
				return "i(" + pos + "," + c + ")";
			else
				return "d(" + pos + ")";
		}
		
		public static Edit next(Scanner in) {
			String op = in.next();
			if (op.equals("E"))
				return null;
			Edit e = new Edit();
			e.insert = op.equals("I");
			e.pos = in.nextLong();
			if (e.insert) {
				e.c = in.next().charAt(0);
			}
			return e;
		}
		
		public boolean equals (Object obj) {
			if (obj instanceof Edit) {
				Edit e = (Edit)obj;
				return insert == e.insert
						&& pos == e.pos
						&& c == e.c;
			} else
				return false;
		}
		
	}
	
}
