Optimal flat recongniser