diff --git a/lib/read_mealy.cpp b/lib/read_mealy.cpp
index a5221dd57170b500d0b94ebf1bc9f96aa8ab96ff..f4cc1c48e652346a63154373bcfb320d993a5c02 100644
--- a/lib/read_mealy.cpp
+++ b/lib/read_mealy.cpp
@@ -66,7 +66,7 @@ mealy read_mealy_from_txt(const std::string & filename) {
 mealy read_mealy_from_dot(std::istream & in, translation & t){
 	mealy m;
 
-	std::map<std::string, state> state_indices;
+	std::unordered_map<std::string, state> state_indices;
 	state max_state = 0;
 
 	string line;
@@ -142,7 +142,7 @@ std::pair<mealy, translation> read_mealy_from_dot(const string & filename){
 
 
 template <typename T>
-std::vector<std::string> create_reverse_map_impl(std::map<std::string, T> const & indices) {
+std::vector<std::string> create_reverse_map_impl(std::unordered_map<std::string, T> const & indices) {
 	std::vector<std::string> ret(indices.size());
 	for (auto && p : indices) {
 		ret[p.second] = p.first;
@@ -150,7 +150,7 @@ std::vector<std::string> create_reverse_map_impl(std::map<std::string, T> const
 	return ret;
 }
 
-std::vector<string> create_reverse_map(const std::map<string, input> & indices) {
+std::vector<string> create_reverse_map(const std::unordered_map<string, input> & indices) {
 	return create_reverse_map_impl(indices);
 }
 
diff --git a/lib/read_mealy.hpp b/lib/read_mealy.hpp
index 845311a25d705ee38a60faf1962da64e711d9812..a1725826588b61090a72a5d0cb01d6489f233d9c 100644
--- a/lib/read_mealy.hpp
+++ b/lib/read_mealy.hpp
@@ -3,7 +3,8 @@
 #include "types.hpp"
 
 #include <iosfwd>
-#include <map>
+#include <string>
+#include <unordered_map>
 #include <utility>
 
 struct mealy;
@@ -27,16 +28,16 @@ std::pair<mealy, translation> read_mealy_from_dot(std::string const & filename);
 
 /// \brief For non-integral formats we use a translation to integers
 struct translation {
-	std::map<std::string, input> input_indices;
+	std::unordered_map<std::string, input> input_indices;
 	input max_input = 0;
 
-	std::map<std::string, output> output_indices;
+	std::unordered_map<std::string, output> output_indices;
 	output max_output = 0;
 };
 
 /// \brief inverts the input_indices and output_indices maps
-std::vector<std::string> create_reverse_map(std::map<std::string, input> const & indices);
-std::vector<std::string> create_reverse_map(std::map<std::string, output> const & indices);
+std::vector<std::string> create_reverse_map(std::unordered_map<std::string, input> const & indices);
+std::vector<std::string> create_reverse_map(std::unordered_map<std::string, output> const & indices);
 
 /// \brief defines trivial translation (the string represent integers directly)
 translation create_translation_for_mealy(mealy const & m);