string and text processing algorithms