List post by title length

Add the following to your functions.php for the on save. This will create a meta value on save that stores the length of the post title.

function save_crosses_title_length( $post_id ) {

  $title = get_the_title($post_id);//get the title
  $length = strlen( $title );// get the length of title

  if ( get_post_meta( $post_id, 'name_length_crosses' ) ) {//if meta value exists
    update_post_meta( $post_id, 'name_length_crosses', $length );//update meta value
    return;
  }

  add_post_meta( $post_id, 'name_length_crosses', $length );//else create meta value

}

add_action( 'save_post_crosses', 'save_crosses_title_length');

For actually querying the posts.. Use the following. You can learn more about WP_Query here: https://codex.wordpress.org/Class_Reference/WP_Query

$args = array(
    'post_type' => 'crosses',
    'meta_key'  => 'name_length_crosses',
    'orderby'   => 'meta_value_num',
    'order'     => 'ASC'
);

$custom_query = new WP_Query( $args );


while ( $custom_query->have_posts() ) :
   $custom_query->the_post();

   echo '<p>' . the_title() . '</p>';

endwhile;

If you like this approach I can build you a simple loop to run to update the existing posts.