private int minimalThrow() {
        int start = 0, destination = 100;
        Queue<Integer> queue = new LinkedList<Integer>();
        boolean[] visited = new boolean[101];
        int[] distance = new int[101];
        queue.add(start);
        visited[start] = true;
        distance[start] = 0;

        while (!queue.isEmpty()) {
           // System.out.println("removing"+queue.peek());
            Integer element = queue.remove();
            if (element >= 100) {
                return distance[element];
            }
            if (snakes.get(element) != null) {
                int nextElementSnake = snakes.get(element);
                if (!visited[nextElementSnake]){
                    queue.add(nextElementSnake);
                  //  System.out.println("adding"+nextElementSnake);
                    visited[nextElementSnake] = true;
                    distance[nextElementSnake] = distance[element];
                }

            }
            if (ladder.get(element) != null) {
                int nextElementLadder = ladder.get(element);
                if (!visited[nextElementLadder]){
                    queue.add(nextElementLadder);
                //    System.out.println("adding"+nextElementLadder);
                    visited[nextElementLadder] = true;
                    distance[nextElementLadder] = distance[element];
                }

            }
            for (Integer next = element + 1; next <= element + 6 && next <= 100; next++) {
                if (!visited[next]){
                    distance[next] = distance[element] + 1;
                    queue.add(next);
                    visited[next]=true;
                   // System.out.println("adding"+next);
                }
            }
        }
        return -1;
    }