program ExtraiPalavra (ArqTexto, ArqAlfabeto);
const MAXALFABETO = 255;
type TipoAlfabeto = array [0..MAXALFABETO] of boolean;
var ArqTexto, ArqAlfabeto: text;
    Alfabeto: TipoAlfabeto;
    Palavra : string[255];
    Linha   : string[255];
    i       : integer;
    aux     : boolean;

  procedure DefineAlfabeto (var Alfabeto: TipoAlfabeto);
  var Simbolos: string[MAXALFABETO]; i: integer;
  begin
    for i := 0 to MAXALFABETO do Alfabeto[i] := false;
    readln (ArqAlfabeto, Simbolos);
    for i := 1 to length (Simbolos) do Alfabeto[ord(Simbolos[i])] := true;
    Alfabeto[0] := false; { caractere de codigo zero: separador }
  end;
  
begin 
  reset (ArqTexto); reset (ArqAlfabeto);
  DefineAlfabeto (Alfabeto); { Le alfabeto definido em arquivo }
  aux := false;
  while not eof (ArqTexto) do
    begin
    readln (ArqTexto, Linha);
    Linha := Linha + char (0); { Coloca um separador no final da linha }
    for i := 1 to length (Linha) do
      begin
      if Alfabeto[ord (Linha[i])]
      then begin Palavra := Palavra + Linha[i]; aux := true; end
      else if aux then
           begin
           writeln (Palavra);
           Palavra := ''; aux := false;
           end;
      end;
    end;  
end.

