First of all, let’s establish what letters we already know can’t be certain pieces.
B, C, and F can’t be pawns because they’re on the back rank. E can’t be the king because white doesn’t have one. A and B can’t be the king because there are duplicates in the same color. This will be more important when we start to get into the nitty-gritty of it.
Let’s now assume that nothing bizarre is going on and that a represents white pawns, and A is black pawns. However, this can’t be the case. Both white’s c1- and f1- bishops could not “escape” due to the unmoved pawns on b2, d2, e2 and g2, so they both had to be captured on their starting squares (this is plausible, since white has no “e” piece.) However, black has made two pawn captures on b6 and f6 in this scenario, so between the captures on b6, f6, c1 and f1 they must have made four captures. However, white is only missing three pieces.
Switching a to black pawns and A to white pawns does not help. White would have had to make at least one capture on b6 and f6, and at least two more captures for their a-pawn alone to pass Black’s (one to pass, and one to get it back to the a-file). Therefore, the letter a cannot represent pawns.
A also cannot represent knights. As I explained above, the king must be C or F. If A represented knights and the king was F, the king on h8 would be in an illegal double check. If A represented knights and the king was C, both kings would be in check.
A also cannot represent rooks or queens for a similar reason; whether the kings were C or F, both would be in check.
Therefore, the only valid piece for A is the bishop. If a is a bishop, then C cannot be the king due to an illegal double check, so F must be the king. This puts the king on d6 in check from the bishop on a3; this check must be a discovered check, since there’s no way for the a3-bishop to move there without having the king already in check. Keep that in mind.
B can’t be the queen because it would put the other king in check. It can’t be a knight due to an illegal double check from c8 and a3. Bishop and king are accounted for, and B can’t be a pawn (back rank), so B must be the rook.
From here, the rest is fairly simple. C can’t be the queen due to an illegal double check from e8 and a3. D can’t be the queen due to an illegal double check (having it move from c5 would have had the king in check already). Therefore, E must be the queen. C also can’t be the pawn (back rank), so d must be the pawn, leaving C to be the knight.
There’s still another problem. The pawn couldn’t have moved from c5, since it would have already had the black king in check. It couldn’t have taken a piece on c6, because then the king would have been in check already. If only there was a way for a pawn on d5 to take a piece from c5…
In conclusion, the final position is

We're not quite done, as @mathmandan pointed out:
Black's most recent move was c5; prior to that it had a pawn on c7, and the Black king was in check from the a3 bishop. Again, this must have been a discovered check. But what piece could have delivered it? Only the pawn: we must have had 1. b5+ c5 2. bxc6ep+.