#><>, 139 129 bytes
><>, 139 129 bytes
1vo <
>>i:"z")?^:"A"^>~~>~1$-
^o+< >::"aA"@=?^=?^$v
^o-^? ("^"$*48:v?@:<
^ vv? )"Z":v?(< >>o
> ^v < >:0 )?^;
:< ^v?( "a"
A language with no concept of "characters" is surely the right tool for the job :)