// D. Reicer

// Contest #2 - SR3

// Paul VI High School (3094)

 

import java.util.PriorityQueue;

 

public class Data

{

      public void operate (String input, int counter)

      {

            int pos = 0;

            String operation = "";

            String string1 = "";

            String string2 = "";

            int num = 0;

 

            while ((int) input.charAt(pos) > 64 && (int) input.charAt(pos) < 91)

            {

                  operation += input.charAt(pos);

                  pos++;

            }

 

            if (operation.equals("ADD") || operation.equals("SUBTRACT"))

            {

                  if(input.charAt(pos) == '0')

                  {

                        num = 0;

                  }

                  else if(input.charAt(pos) == '1')

                  {

                        num = 1;

                  }

                  else if(input.charAt(pos) == '2')

                  {

                        num = 2;

                  }

                  else if(input.charAt(pos) == '3')

                  {

                        num = 3;

                  }

                  else if(input.charAt(pos) == '4')

                  {

                        num = 4;

                  }

 

                  pos += 3;

            }

            else

            {

                  pos += 2;

            }

 

            while ((int) input.charAt(pos) > 64 && (int) input.charAt(pos) < 91)

            {

                  string1 += input.charAt(pos);

                  pos++;

 

                  if (pos >= input.length())

                  {

                        break;

                  }

            }

 

            if(operation.equals("UNION") || operation.equals("INTERSECT"))

            {

                  pos += 2;

 

                  while ((int) input.charAt(pos) > 64 && (int) input.charAt(pos) < 91)

                  {

                        string2 += input.charAt(pos);

                        pos++;

 

                        if (pos >= input.length())

                        {

                              break;

                        }

                  }

            }

 

            if(operation.equals("ADD"))

            {

                  System.out.println(counter + ". " + add(string1, num));

            }

            else if(operation.equals("SUBTRACT"))

            {

                  System.out.println(counter + ". " + subtract(string1, num));

            }

            else if(operation.equals("DIVIDE"))

            {

                  System.out.println(counter + ". " + divide(string1));

            }

            else if(operation.equals("UNION"))

            {

                  System.out.println(counter + ". " + union(string1, string2));

            }

            else if(operation.equals("INTERSECT"))

            {

                  System.out.println(counter + ". " + intersect(string1, string2));

            }

      }

      public static String divide(String input)

      {

            String string1 = "";

            String string2 ="";

 

            for (int x = 0; x < 8; x++)

            {

                  if(x < 4)

                  {

                        string1 += input.charAt(x);

                  }

                  else

                  {

                        string2 += input.charAt(x);

                  }

            }

 

            string1 = alphabetize(string1);

            string2 = alphabetize(string2);

 

            for (int x = 0; x < 4; x++)

            {

                  string1 += string1.charAt(x);

                  string2 += string2.charAt(x);

            }

 

            return (string1 + " and " + string2);

      }

 

      public static String add (String input, int num)

      {

            String output = "";

            String addition = "";

            int counter = 0;

 

            while (counter < num)

            {

                  addition += input.charAt(counter);

                  counter++;

            }

 

            output += addition;

            addition = alphabetize(addition);

            output += addition;

 

            while (output.length() < 8)

            {

                  output += input.charAt(counter);

                  counter++;

            }

 

            return output;

      }

 

      public static String subtract (String input, int num)

      {

            String output = "";

 

            for(int x = 0; x < 8; x++)

            {

                  if(x > num - 1)

                  {

                        output += input.charAt(x);

                  }

            }

 

            int counter = output.length() - 1;

            String extra = "";

 

            while(8 > (output.length() + extra.length()))

            {

                  extra += output.charAt(counter);

                  counter--;

            }

 

            extra = alphabetize(extra);

 

            output += extra;

 

            return output;

      }

 

      public static String union (String input1, String input2)

      {

            String output = "";

            String half1 = "";

            String half2 = "";

 

            for (int x = 0; x < 8; x++)

            {

                  if(x < 4)

                  {

                        half2 += input2.charAt(x);

                  }

                  else

                  {

                        half1 += input1.charAt(x);

                  }

            }

 

            half1 = alphabetize(half1);

            half2 = alphabetize(half2);

 

            output = half1 + half2;

 

            return output;

      }

 

      public static String intersect (String input1, String input2)

      {

            String output = "";

            String half1 = "";

            String half2 = "";

 

            for (int x = 0; x < 8; x++)

            {

                  if (x < 2 || x > 5)

                  {

                        half1 += input1.charAt(x);

                        half2 += input2.charAt(x);

                  }

            }

 

            half1 = alphabetize(half1);

            half2 = alphabetize(half2);

 

            output = half1 + half2;

 

            return output;

      }

 

      public static String alphabetize (String input)

      {

            String output = "";

            PriorityQueue <Character> alphabetical = new PriorityQueue <Character>();

 

            for (int x = 0; x < input.length(); x++)

            {

                  alphabetical.add(input.charAt(x));

            }

 

            while(!alphabetical.isEmpty())

            {

                  output += alphabetical.remove();

            }

 

            return output;

      }

}