Index: src/BasicTypes-gen.cpp
===================================================================
--- src/BasicTypes-gen.cpp	(revision 299bd989a191c9c9b32e13f479abcab4bd9d5396)
+++ src/BasicTypes-gen.cpp	(revision c44f1f9767f26b5219070ead6420662e3ee666a0)
@@ -177,13 +177,13 @@
 		int i = graph[col].left;
 		if ( i == -1 ) continue;
-		q.emplace( i, cost + 1, scost + ! (graph[col].sign & graph[i].sign) );
+		q.emplace( i, cost + max(1, graph[i].rank-graph[col].rank), scost + ! (graph[col].sign & graph[i].sign) );
 
 		i = graph[col].middle;
 		if ( i == -1 ) continue;
-		q.emplace( i, cost + 1, scost + !(graph[col].sign & graph[i].sign) );
+		q.emplace( i, cost + max(1, graph[i].rank-graph[col].rank), scost + !(graph[col].sign & graph[i].sign) );
 
 		i = graph[col].right;
 		if ( i == -1 ) continue;
-		q.emplace( i, cost + 1, scost + !(graph[col].sign & graph[i].sign) );
+		q.emplace( i, cost + max(1, graph[i].rank-graph[col].rank), scost + !(graph[col].sign & graph[i].sign) );
 	} while ( ! q.empty() );
 } // generateCosts
