public static void compress() {
		String input = BinaryStdIn.readString();
		
		// single char
		TST<Integer> st = new TST<Integer>();
		for (int i = 0; i < R; i++) 
			st.put("" + (char) i, i);
		int code = R + 1;
		
		while (input.length() > 0) {
			String s = st.longestPrefixOf(input);
			BinaryStdOut.write(st.get(s), W); // print s's codeword
			
			int t = s.length();
			// add (s + 1 char) to symbol table
			if (t < input.length() && code < L)
				st.put(input.substring(0, t + 1), code++);
			
			input = input.substring(t);
		}
		
		BinaryStdOut.write(R, W); // print terminate codeword R
		BinaryStdOut.close();
	}