import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

class ScramblePanel extends Panel implements ActionListener {
    int FACE_U=0;
    int FACE_UF=1;
    int FACE_UFR=2;
    int FACE_UBR=3;
    int FACE_UBL=4;
    int FACE_UFL=5;
    int FACE_D=6;
    int FACE_DB=7;
    int FACE_DBL=8;
    int FACE_DFL=9;
    int FACE_DFR=10;
    int FACE_DBR=11;
    Random rnd = new Random();

    int neighbors[][] = {
	{FACE_UF ,FACE_UFR,FACE_UBR,FACE_UBL,FACE_UFL}, // U
	{FACE_U  ,FACE_UFR,FACE_DFR,FACE_DFL,FACE_UFL}, // UF
	{FACE_U  ,FACE_UBR,FACE_DBR,FACE_DFR,FACE_UF }, // UFR
	{FACE_U  ,FACE_UBL,FACE_DB ,FACE_DBR,FACE_UFR}, // UBR
	{FACE_U  ,FACE_UFL,FACE_DBL,FACE_DB ,FACE_UBR}, // UBL
	{FACE_U  ,FACE_UF ,FACE_DFL,FACE_DBL,FACE_UBL}, // UFL
	{FACE_DB ,FACE_DBR,FACE_DFR,FACE_DFL,FACE_DBL}, // D
	{FACE_D  ,FACE_DBL,FACE_UBL,FACE_UBR,FACE_DBR}, // DB
	{FACE_D  ,FACE_DFL,FACE_UFL,FACE_UBL,FACE_DB }, // DBL
	{FACE_D  ,FACE_DBL,FACE_UFL,FACE_UF ,FACE_DFR}, // DFL
	{FACE_D  ,FACE_DFL,FACE_UF ,FACE_UFR,FACE_DBR}, // DFR
	{FACE_D  ,FACE_DFR,FACE_UFR,FACE_UBR,FACE_DB }, // DBR
    };

    String FaceNames[] = {
	"U",
	"UF",
	"UFR",
	"UBR",
	"UBL",
	"UFL",
	"D",
	"DB",
	"DBL",
	"DFL",
	"DFR",
	"DBR",
    };
	
    String a=scramble();

    public String scramble() {
	int i, j, k, turn, turns=0, times;
	String alg="";
	boolean turnok[] = new boolean[12];
	for(i=0;i<12;i++) {
	    turnok[i] = true;
	}
	for(i=0;i<72;) {
	    turn = Math.abs(rnd.nextInt())%12;
	    if(turnok[turn]) {
		times = Math.abs(rnd.nextInt())%4+1;
		alg = alg + FaceNames[turn] + times;
		for(j=FaceNames[turn].length();j<4;j++) {
		    alg = alg + " ";
		}
		turnok[turn] = false;
		for(j=0;j<5;j++) {
		    turnok[neighbors[turn][j]] = true;
		}
		i++;
	    }
	}
	//System.out.println(alg);
	return alg;
    }

    public void actionPerformed(ActionEvent e) {
	//System.out.println(e);
	a=scramble();
	repaint();
    }


    public void paint(Graphics g) {
	g.setFont(new Font("Monospaced", Font.PLAIN, 12));
	for(int i=0; i<6; i++) {
	    g.drawString(a.substring(i*5*12,(i+1)*5*12), 0, (i+1)*12);
	}
    }
}

public class MinxScrambleApplet extends Applet {
    public void init() {
	ScramblePanel sp;
	Button b;
	setLayout(new BorderLayout());
	add(sp = new ScramblePanel(), BorderLayout.CENTER);
	add(b = new Button("scramble"), BorderLayout.SOUTH);
	b.addActionListener(sp);
    }
}

