diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -29,3 +29,9 @@
 ## 0.4.1.0 -- 2021-09-08
 
 * Fourth version revised A. Fixed issue with missing pragma for bang patterns in the Main.hs file.
+
+## 0.5.0.0 -- 2021-10-23
+
+* Fifth version. Changed the boundaries for the maximum number of words accordingly to the pairwise permutations case only. 
+Added the possibility to handle both pairwise and universal permutations set. Updated the dependencies boundaries. 
+
diff --git a/Distribution/Main.hs b/Distribution/Main.hs
--- a/Distribution/Main.hs
+++ b/Distribution/Main.hs
@@ -40,11 +40,13 @@
 
 main :: IO ()
 main = do
-  args0 <- getArgs
-  let !args = filter (/= "+W") args0
+  args00 <- getArgs
+  let !args0 = filter (/= "+p") args00
+      !pairwisePermutations = any (== "+p") args00
+      !args = filter (/= "+W") args0
       !gzS = mconcat . take 1 $ args
       !printInput = mconcat . drop 1 . take 2 $ args
       !whitelines = any (== "+W") args0 -- Usually, if specified -- the third argument
   contents <- B.getContents
-  innerProc whitelines gzS printInput contents
+  innerProc pairwisePermutations whitelines gzS printInput contents
 
diff --git a/Distribution/Processment.hs b/Distribution/Processment.hs
--- a/Distribution/Processment.hs
+++ b/Distribution/Processment.hs
@@ -52,8 +52,8 @@
 #endif
 #endif
 
-innerProc :: Bool -> String -> String -> B.ByteString -> IO ()
-innerProc whitelines gzS printInput contents = do
+innerProc :: Bool -> Bool -> String -> String -> B.ByteString -> IO ()
+innerProc pairwisePermutations whitelines gzS printInput contents = do
   if printInput == "1" then B.putStr contents else B.putStr B.empty
   (!data31,!wordsCnt0_data32) <- processContents whitelines contents
   let !gz = getIntervalsN gzS data31 -- Obtained from the first command line argument except those ones that are for RTS
@@ -63,9 +63,12 @@
   else do
       let (!mean1,!disp) = meanWithDispD2 data4
           !pairs = sort . filter ((/= 0) . snd) $ wordsCnt0_data32
-          g !m !n = (length . takeWhile (\(_,v) -> v == n) . dropWhile (\(_,v) -> v /= n) . takeWhile (\(u,_) -> u == m) . dropWhile (\(u,_) -> u /= m) $ pairs) `using` rdeepseq
-          h !y !x = mconcat [mconcat . map (\m1 -> mconcat [mconcat . map (\n1 ->  (if y then show (g m1 n1) else if g m1 n1 == 0 then "." else show (g m1 n1)) ++ "\t") $ [1..gz],newLineEnding]) $ [2..7],replicate 102 x]
-      putStrLn . generalInfo1 gz pairs (mean1, disp) $ data31
+          g !m !n = (length . takeWhile (\(_,v) -> v == n) . dropWhile (\(_,v) -> v /= n) . takeWhile (\(u,_) -> u == m) .
+              dropWhile (\(u,_) -> u /= m) $ pairs) `using` rdeepseq
+          h !y !x = mconcat [mconcat . map (\m1 -> mconcat [mconcat . map (\n1 ->  (if y then show (g m1 n1)
+              else if g m1 n1 == 0 then "." else show (g m1 n1)) ++ "\t") $ [1..gz],newLineEnding]) $
+                [2..(if pairwisePermutations then 10 else 7)],replicate 102 x]
+      putStrLn . generalInfo1 pairwisePermutations gz pairs (mean1, disp) $ data31
       putStrLn (h False '~')
       putStrLn (h True '=')
 
@@ -83,14 +86,16 @@
         !intervalNs = map (\xs -> fromMaybe 0 (readMaybe xs::Maybe Int)) intervalNStrs
     return (ratios,zip wordsNs intervalNs)
 
-generalInfo1 :: Int -> [(Int,Int)] -> (Double,Double) -> [Double] -> String
-generalInfo1 gz pairs (mean1, disp) data31 =
+generalInfo1 :: Bool -> Int -> [(Int,Int)] -> (Double,Double) -> [Double] -> String
+generalInfo1 pairwisePermutations gz pairs (mean1, disp) data31 =
  let !ks = map (\r -> length . takeWhile (== r) . dropWhile (/= r) . sort . map snd $ pairs) [1..gz]
      !s = sum ks in
-       mconcat [replicate 102 '-', newLineEnding, mconcat . map (\r -> show r ++ "\t") $ [1..gz], newLineEnding, mconcat . map (\r ->  show r ++ "\t") $ ks,
-         newLineEnding, mconcat . map (\r -> showFFloat (Just 2) (fromIntegral (r * 100) / fromIntegral s)  "%\t") $ ks,newLineEnding,
-          mconcat [showFFloat (Just 4) mean1 "+-", showFFloat (Just 4) (sqrt disp) "\t", show (length . filter ((<= 1) . fst) $ pairs),
-           '\t':show (length data31)], newLineEnding, mconcat . map (\r -> show r ++ "\t") $ [2..7], newLineEnding, mconcat .
-              map (\r ->  (show . length . takeWhile (== r) . dropWhile (/= r) . map fst $ pairs) ++ "\t") $ [2..7], newLineEnding, replicate 102 '*']
+       mconcat [replicate 102 '-', newLineEnding, mconcat . map (\r -> show r ++ "\t") $ [1..gz], newLineEnding,
+        mconcat . map (\r ->  show r ++ "\t") $ ks,
+         newLineEnding, mconcat . map (\r -> showFFloat (Just 2) (fromIntegral (r * 100) / fromIntegral s)  "%\t") $ ks,
+          newLineEnding, mconcat [showFFloat (Just 4) mean1 "+-", showFFloat (Just 4) (sqrt disp) "\t",
+           show (length . filter ((<= 1) . fst) $ pairs), '\t':show (length data31)], newLineEnding,
+            mconcat . map (\r -> show r ++ "\t") $ [2..7], newLineEnding, mconcat .
+              map (\r ->  (show . length . takeWhile (== r) . dropWhile (/= r) . map fst $ pairs) ++ "\t") $
+                [2..(if pairwisePermutations then 10 else 7)], newLineEnding, replicate 102 '*']
 {-# INLINE generalInfo1 #-}
-
diff --git a/phonetic-languages-plus.cabal b/phonetic-languages-plus.cabal
--- a/phonetic-languages-plus.cabal
+++ b/phonetic-languages-plus.cabal
@@ -3,7 +3,7 @@
 -- http://haskell.org/cabal/users-guide/
 
 name:                phonetic-languages-plus
-version:             0.4.1.0
+version:             0.5.0.0
 synopsis:            Some common shared between different packages functions.
 description:         Among them are the uniqueness-periods-vector series.
 homepage:            https://hackage.haskell.org/package/phonetic-languages-plus
@@ -21,7 +21,7 @@
   exposed-modules:     Languages.UniquenessPeriods.Vector.AuxiliaryG, Data.Statistics.RulesIntervals,  Data.Statistics.RulesIntervalsPlus, Distribution.Processment
   -- other-modules:
   other-extensions:    CPP, BangPatterns
-  build-depends:       base >=4.7 && <4.16, bytestring >= 0.10 && < 0.14, lists-flines >=0.1.1 && <1, uniqueness-periods-vector-stats >=0.2.1 && <1, parallel >=3.2.0.6 && <4
+  build-depends:       base >=4.8 && <4.16, bytestring >= 0.10 && < 0.14, lists-flines >=0.1.1 && <1, uniqueness-periods-vector-stats >=0.2.1 && <1, parallel >=3.2.0.6 && <4
   -- hs-source-dirs:
   default-language:    Haskell2010
 
@@ -29,7 +29,7 @@
   main-is:             Main.hs
   other-modules:       Data.Statistics.RulesIntervals, Data.Statistics.RulesIntervalsPlus, Distribution.Processment
   other-extensions:    CPP, BangPatterns
-  build-depends:       base >=4.7 && <4.16, bytestring >= 0.10 && < 0.14, lists-flines >=0.1.1 && <1, uniqueness-periods-vector-stats >=0.2.1 && <1, parallel >=3.2.0.6 && <4
+  build-depends:       base >=4.8 && <4.16, bytestring >= 0.10 && < 0.14, lists-flines >=0.1.1 && <1, uniqueness-periods-vector-stats >=0.2.1 && <1, parallel >=3.2.0.6 && <4
   ghc-options:         -threaded -rtsopts
   hs-source-dirs:      ., Distribution
   default-language:    Haskell2010
