Some constraint solvers include a method to model and solve Sudokus, and a program may require less than 100 lines of code to solve a simple Sudoku. If the code employs a strong reasoning algorithm, incorporating backtracking is only needed for the most difficult Sudokus. An algorithm combining a constraint-model-based algorithm with backtracking would have the advantage of fast solving time, and the ability to solve all sudokus. Sudoku puzzles may be described as an exact cover problem. This allows for an elegant description of the problem and an efficient solution. Modelling Sudoku as an exact cover problem and using an algorithm such as Knuth's Algorithm X will typically solve a Sudoku in a few milliseconds. An alternative approach is the use of Gauss elimination in combination with column and row striking. Computer programs are often used to "search" for Sudokus with certain properties, such as a small number of clues, or certain types of symmetry. Over 49,000 Sudokus with 17 clues have been found, but discovering new distinct ones (not transformations of existing known Sudokus) is becoming more difficult as undiscovered ones become more rare. One common method of searching for Sudokus with a particular characteristic is called "neighbor searching". Using this strategy, one or more known Sudokus which satisfy or nearly satisfy the characteristic being searched for is used as a starting point, and these Sudokus are then altered to look for other Sudokus with the property being sought. The alteration can be relocating one or more clue positions, or removing a small number of clues, and replacing them with a different number of clues. For example, from a known Sudoku, a search for a new one with one fewer clues can be performed by removing two clues and adding one clue in a new location. (This can be called a {-2,+1} search). Each new "pattern" would then be searched exhaustively for all combinations of clue values, with the hope that one or more yields a valid Sudoku (i.e. can be solved and has a single solution). Methods can also be employed to prevent essentially equivalent Sudokus from being redundantly tested. As a specific example, a search for a 17-clue Sudoku could start with a known 18-clue Sudoku, and then altering it by removing "three clues", and replacing them with only "two clues", in different positions (see last two images). This may discover new Sudokus, but there would be no immediate guarantee that they are essentially different from already known Sudokus.