PKU1409

気分を変えてJavaで。
543B

import java.util.*;

class Main{
  Set<String>t;
  String s,m="22233344455566677778889999",b[]=new String[300];
  int l,i,y,c;

  public static void main(String[]a){
    new Main(new Scanner(System.in));
  }
  Main(Scanner r){
    for(;(i=r.nextInt())>0;){
      t=new TreeSet();
      for(;i-->0;)
        t.add(r.next());
      s=r.next();
      l=s.length();
      f(0);
      System.out.print("--\n");
    }
  }

  void f(int o){
    q:for(String w:t){
      y=o+w.length();
      if(y<=l){
        for(i=o;i<y;++i)
          if(m.charAt(w.charAt(i-o)-'a')!=s.charAt(i))
            continue q;
        if(y<l){
          b[c++]=w;
          f(y);
          --c;
        }
        else{
          for(i=c;i-->0;)
            w=b[i]+" "+w;
          System.out.print(w+".\n");
        }
      }
    }
  }
}