Why does this code not display in alphabetical order?

I am trying to display artists in alphabetical order. They kind of do bu then some letters are added to the end. You can see list by going here and rolling over artists in the menu (E, F, O and T appear at the end):

function get_artist_list(){

$terms = get_top_taxonomies('artist','all');
//print_r($terms);
if ( !empty( $terms ) && !is_wp_error( $terms ) ){
//$term_list = [];
$art_list = '';
$count = 0;
foreach ( $terms as $term ){
    $first_letter = strtoupper($term->name[0]);
    $term_list[$first_letter][] = $term;
}
unset($term);

foreach ( $term_list as $key=>$value ) {
$count ++;
        	$art_list .=  '<div class="col-md-3 col-sm-3">
            	<div class="black-bk active-bk">'.$key.'</div>
                <div class="artist-links">';
 foreach ( $value as $term ) {
                                        	$art_list .=  '<a href="' . get_term_link( $term ) . '">' . $term->name . '</a>';
}

$art_list .= '</div>
			</div>';
if($count %4 == 0){
				$art_list .= '<div class="art-bord" style="clear:both;margin: 10px 15px 15px;"></div>';
			}
} }
			return $art_list;
}