public static int optimize(Map<Integer,ZState> states){
        //FIXME не реалізовано
        int power = 0;
        for (ZState state : states.values()) {
            if(state.fromConnections.size() > 1){
                for (int i = 0; i < state.fromConnections.size(); i++) {
                    Connection curr = state.fromConnections.get(i);
                    Connection same = null;   // Зв'язок, що відмінний однією логічною умовою
                    //TODO реалізувати пошук переходів з різною логічною умовою і без зворотніх повернень
                    for (int j = i+1; j < state.fromConnections.size(); j++) {
                        
                        int diffConditions = 0;
                        for (int k = 0; k < curr.conditions.length; k++) {
                            if(curr.conditions[k] == state.fromConnections.get(j).conditions[k]){
                                diffConditions++;
                            }
                        }
                        
                        if(diffConditions == 1){
                            
                        }
                    }
                    
                }
            }
            
            
            //TODO пошук входів за однією умовою без зворотнього шляху
        }
        
        
        return power;
    }