এই ফাংশনটিতে আমাদের একটি queue থাকবে। যেখানে আমরা একে একে নোডগুলোকে রাখব, এবং সেগুলোকে নিয়ে কাজ করব। তো প্রথমে ০ এর ‘child node’ গুলোকে কিউতে ঢোকাব, এদের প্রত্যেকের ‘fail node’ হবে ০. এখন কিউয়ের প্রতি নোডের জন্যে আমার কাজ হবে, তার প্রত্যেকটা চাইল্ড নোডের জন্যে ফেইল নোড বের করা। ‘current node’ এর প্রত্যেকটি ‘child node’ এর ‘closest ancestor’ এর ‘fail node’ এর কোন ‘child node’ এ ওই সেইম ক্যারেক্টারের কোন নোড আছে কিনা সেটা চেক করতে হবে, থাকলে ওই নোডটাই হবে ‘current node’ এর জন্য ‘fail node’. এভাবে খুঁজতে খুঁজতে যদি আমরা ০ পর্যন্ত পৌঁছে যাই এবং ০ এর ‘child’ এও ওই ক্যারেক্টার খুঁজে না পাই, তাহলে ০ হবে ওই চাইল্ড নোডের ফেইল নোড। কি, কঠিন লাগছে? আমরা এক এক করে দেখি। ‘fail node’ এর এজগুলোকে ডটেড লাইন দিয়ে দেখানো হয়েছে।