#!/usr/bin/env bash winl=4 win='' function add() { win="${win:1}${1}" } function contains() { # $1 what # $2 where local l=${#2} local ret=1 while (( l-- )); do [[ "$1" = "${2:$l:1}" ]] && ret=0 && break done return $ret } function unq() { local l=${#1} while (( --l )); do contains ${1:$l:1} ${1:0:$l} && break done return $l } i=$(( $winl - 1 )) read -n $i win win=${win:0:1}${win} while read -n 1 a; do let i++ add $a unq "$win" && break done echo $i