Reconstructing cross-cut shredded text documents: a genetic algorithm with splicing-driven reproduction