public Labyrinth(String filename){
		try{
			BufferedReader init = new BufferedReader(new FileReader(filename));
			String current_line;
			int current_char;
			int y = 0;
			while ((current_line = init.readLine()) != null){
				if (this.size == 0){
					this.size = current_line.length();
					this.labyrinth = new boolean[this.size][this.size];
				}
				for (int x = 0 ; x < this.size ; x++){
					current_char = current_line.charAt(x);
					switch (current_char){
						case '#':
							this.labyrinth[y][x] = false;
							break;
						case 'O': 
						case 'o':
						case '0':
							this.labyrinth[y][x] = true;
							break;
						case 'E':
							this.labyrinth[y][x] = true;
							this.entry = new Cell(x,y);
							break;
						default :
							break;
					}
				}
				y++;
			}
			init.close();

			this.directions = new Cell[4];
			this.directions[0] = new Cell(1,0);
			this.directions[1] = new Cell(0,1);
			this.directions[2] = new Cell(-1,0);
			this.directions[3] = new Cell(0,-1);
			this.current_solution = new Solution();
			this.current_solution.add(this.entry);
			this.solutions_list = new Solutions();
			this.current_cell = this.entry;
			
		} catch (IOException e) {
			System.out.println("File does not exists");
			System.exit(2);
		}		
	}