sub get_key { join '', sort $_[0] =~ /./g } my %hash; while () { chomp; $hash{$_}++; } my %fixed; foreach my $key (keys %hash) { my $val = $hash{$key}; $fixed{get_key($key)} += $val; } use Data::Dumper; print(Dumper(\%fixed)); __DATA__ AB AB AB AC AC BA BA BA CA