1.

/**
 * Angewandte Mathematik, SS09, IFB 2C
 * ACM Problem #11223 - (O: dah dah dah!)
 * Link: http://icpcres.ecs.baylor.edu/onlinejudge/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=2164
 *
 * @author Fabian Seidl
 * @author Marcel Sachse
 * @version 1.0, 08.04.2009
 *
 * Status : Accepted
 * Runtime: 0.180
 */


import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;


public class Main {

    public static void main(String[] args) throws IOException {
       
        InputStreamReader in =new InputStreamReader(System.in);
        BufferedReader bin= new BufferedReader(in);
        int loop = Integer.parseInt(bin.readLine());
       
        int i=0;
        String[] code =    {"-","--","---","-----","----.","---..","---...","--.","--.-","--..","--..--","--...","-.","-.-","-.--","-.--.","-.--.-","-.-.","-.-.--","-.-.-.","-..","-..-","-..-.","-...","-...-","-....","-....-",".",".-",".--",".---",".----",".----.",".--.",".--.-.",".-.",".-.-.",".-.-.-",".-..",".-..-.",".-...","..","..-","..---","..--.-","..--..","..-.","...","...-","...--","....","....-",".....",};
        String[] symbol ={"T","M","O","0","9","8",":","G","Q","Z",",","7","N","K","Y","(",")","C","!",";","D","X","/","B","=","6","-","E","A","W","J","1","'","P","@","R","+",".","L","\"","&","I","U","2","_","?","F","S","V","3","H","4","5"};
       
        while(i<loop)
        {
            String line =  bin.readLine();
            System.out.println("Message #"+(i+1));
           
            String[] codeWord=line.split("  ");
            int j =0;
            while(j<codeWord.length)
            {
                StringTokenizer lineTokens = new StringTokenizer(codeWord[j]);

                while(lineTokens.hasMoreElements())
                {
                    int index =Arrays.binarySearch(code,lineTokens.nextToken().toString());
                    System.out.print(symbol[index]);
                }   
                j++;
                if(codeWord.length!=j)System.out.print(" ");
                else System.out.print("\n");
            }
            i++;
            if(loop!=i)System.out.print("\n");
           
        }
    }

}

2.


/**
 * Angewandte Mathematik, SS09, IFB 2C 
 * ACM Problem: O: dah dah dah! (11223)
 * @author Christian Mitterreiter
 * @author Rolf Luigs
 * @version 1.0, 04/08/2009
 * Status : Accepted
 * Runtime: 0.240
 */


import java.io.*;

public class Main {

   
    public static String code(String in) {
       
        String[] Symbol = new String[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", ",", "?", "'", "!", "/", "(", ")", "&", ":", ";", "=", "+", "-", "_",  "\"", "@"}; 
        String[] Code   = new String[] {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..","-----",".----","..---","...--","....-",".....","-....","--...","---..","----.",".-.-.-","--..--","..--..",".----.","-.-.--","-..-.","-.--.","-.--.-",".-...","---...","-.-.-.","-...-",".-.-.","-....-","..--.-",".-..-.",".--.-."};
        String out = "";

    for(int g = 0; g<Code.length;g++) {  //Vergleicht, zu welchem Symbol das aktuelle Codewort passt
        if(in.equals(Code[g])) {
            out+= Symbol[g];
            break;
            }
        }
        return out;
    }
   
   
    public static void main(String[] args) throws IOException {
       
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

        int anzahl = Integer.parseInt(input.readLine());  //Anzahl der Zeilen der Nachricht werden eingelesen
        int count = 0;
       
        while(anzahl > 0) {
           
            count++;
            if(count == 1) {
            System.out.println("Message #" + count);
            }
            else
                System.out.println("\nMessage #" + count);
       
           
            String current = input.readLine();
            String[] woerter = current.split("  ");    //pro Array-Stelle wird ein Wort gespeichert
       
            for(int i = 0; i< woerter.length;i++) {    // nun wird jeweils ein Wort analysiert
                String leerzeichen = " ";
                String wort = woerter[i];
               
                String buchstabe = "";
                for(int j = 0; j<wort.length();j++) {
                   
                    String temp = wort.charAt(j) + "";
                    if(!temp.equals(leerzeichen)) {    //So lange kein Leerzeichen auftritt, wird ein Buchstabe eingelesen
                        buchstabe+= temp;              //Am Ende befindet sich EIN Buchstabe eines Wortes in String   
                    }
                   
                    if(temp.equals(leerzeichen) || j == wort.length()-1) { //Wenn der Buchstabe komplet ist, oder das Wort zu Ende, wird die codierung gestartet
                       
                        System.out.print(code(buchstabe));
                        buchstabe = "";  //rücksetzen des Strings
                    }   
                }
                if( i!= woerter.length-1){ //Um beim letzten Wort in einer Zeile kein Leerzeichen zu bekommen
                    System.out.print(" ");
                }
            }
            if(anzahl >1) {  //Um nach der letzen Nachricht keine Leerzeile zu bekommen
                System.out.println();
            }
            else System.out.print("\n");
            anzahl--;
            }
        input.close();
    }   
}