#!/usr/bin/perl

my $speaker = "NO ONE";
my %hash;

foreach (<STDIN>) {
  chomp;
  if (/^LEHRER/) {
    $speaker = "MOD";
  } elsif (/^KERRY/) {
    $speaker = "KERRY";
  } elsif (/^BUSH/) {
    $speaker = "BUSH";
  } else {
    my @words;
    my @separators;
    substr($_,0,1) = lc substr($_,0,1);
    substr($_,1,1) = lc substr($_,1,1);
    s/\.\"$/\"\./;
    while (s/^(.*?)([a-zA-Z\'\.]+)(.)/$3/) {
      $sep = $1;
      $sep = "" if ($sep eq " ");
      $sep = "" if ($sep eq "-");
      push @separators, $sep;
      $word = $2;
      $word = "I" if ($word eq "i");
      $word = "I'm" if ($word eq "i'm");
      push @words, $2;
# for debugging
#     print "$speaker\t$sep\t$word\n";
    }
    for $numwords (1..20) {
      for $start (0..(scalar @words - $numwords)) {
        $uninterrupted = 1;
        for $pos (($start+1)..($start+$numwords-1)) {
          $uninterrupted = 0 if ($separators[$pos] ne "");
        }
        if ($uninterrupted == 1) {
          my $words = join(" ",@words[$start..($start+$numwords-1)]);
          $words =~ s/\bi\b/I/g;
          $words =~ s/\bi'm\b/I'm/g;
          $words =~ s/\bi've\b/I've/g;
          $words =~ s/\bjim\b/Jim/g;
          $words =~ s/\bsenator\b/Senator/g;
          $words =~ s/\bpresident\b/President/g;
# for debugging
#      print "$speaker\t$words\n";
          ++$hash{$speaker}{$words};
        }
      }
    }
  }
}

sub getcount {
  ($p, $data) = @_;
  $result = $hash{$p}{$data};
  return $result if ($result =~ /^\d+$/);
  return getcount($p, $result);
}

# reassign dominated strings
foreach $speaker (keys %hash) {
  foreach $words (keys %{$hash{$speaker}}) {
    $count = getcount($speaker,$words);
    @words = split(" ", $words);
    foreach $begin (0..((scalar @words) - 1)) {
      foreach $end ($begin..((scalar @words) - 1)) {
        next if ($begin == 0 and $end == (scalar @words) - 1);
        $subwords = join(" ", @words[$begin..$end]);
        $subcount = $hash{$speaker}{$subwords};
        if ($subcount =~ /^\d+$/ and $subcount == $count) {
          $hash{$speaker}{$subwords} = $words;
# for debugging
#          print " $count $words dominates $subcount $subwords\n";
        }
      }
    } 
  }
}

foreach $speaker (keys %hash) {
  foreach $words (keys %{$hash{$speaker}}) {
    $count = $hash{$speaker}{$words};
    push @output, "$speaker\t$count\t$words\n";
  }
}

sub rank {
  ($sa,$ca,$wa) = split("\t",$a);
  ($sb,$cb,$wb) = split("\t",$b);
  if (($sa cmp $sb) != 0) {return ($sa cmp $sb);}
  if (($ca <=> $cb) != 0) {return ($cb <=> $ca);}
  return ($wa <=> $wb);
}

@output = sort rank @output;

print @output;
