module Main where

import qualified Data.SuffixTree as S
import System.Environment (getArgs)

main = do
  [fileName, cons] <- getArgs
  let ctor = case cons of
               "1" -> S.constructWith [minBound..maxBound]
               "2" -> S.construct
  tree <- ctor `fmap` readFile fileName
  putStrLn (show (S.fold id id (\_ a _ -> a+1) id 0 tree) ++ " edges")
  (lines `fmap` getContents) >>= mapM_ (print . (`S.elem` tree))

