#!/usr/bin/perl

@formulae = <STDIN>;
chomp @formulae;
$answer = pop @formulae;
@basicweights = ();
@foo = split /[\; ]/, $answer;
foreach (@foo) {
  if (($_ * 1) eq $_) {
    push @basicweights, $_;
  } elsif ($_ =~ /^[A-Z]$/) {
    push @letters, $_;
  }
}
@basicweights = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);

sub evaluate {
  my @terms = split " ", $_[0];
  foreach (@terms) {
    return -1 if ($_ !~ /x/ and $value{$_} == 0);
  }
  my $multiplier = 0;
  my $total = 0;
  foreach (@terms) {
    if ($_ =~ /(.*)x/) {
      $multiplier = $1;
    } else {
      $total += ($multiplier * $value{$_});
    }
  }
  return 1 if ($total == 0);
  return 0;
}

sub inc {
  return chr(ord($_[0])+1);
}

sub recurse {
  if ($_[0] > $#letters) {
    foreach (@letters) {
      print $_;
      print " ";
      print $value{$_};
      print " ";
    }
    print "\n";
    return;
  }
  my $letter = $letters[$_[0]];
  my $try;
  for $try (0..$#basicweights) {
    next if ($assigned{$try} ne "");
    $assigned{$try} = $letter;
    $value{$letter} = $weights[$try];
print "$letter $value{$letter}\n" if ($_[0] < 5);
    my $bad = 0;
    foreach (@formulae) {
      my $result = evaluate($_);
      $bad = 1 if ($result == 0);
#if ($bad == 1) {
#  print "bad $_\n";
#  for (@letters) {
#    print $_, " ", $value{$_}, " ; ";
#  }
#  print "\n";
#}
      last if ($bad == 1);
      last if ($result == -1);
    }
    if ($bad == 0) {
      recurse($_[0]+1);
    }
    $value{$letter} = 0;
    $assigned{$try} = "";
  }
}

sub numerically {
   return $a <=> $b;
}

foreach (0..$#basicweights) {
  $assigned{$_} = "";
}
for (@letters) {
  $value{$_} = 0;
}

@weights = reverse sort numerically (@basicweights);
recurse(0);


