#!/usr/bin/env bash function lowi() { low=${#1} i=0 li=0 shift for l in "$@"; do let i++ if [ ${#l} -lt $low ]; then li=$i low=${#l} fi done echo $li } declare -A P p=0 for i in {a..z} {A..Z}; do let p++ P[$i]=$p done sum=0 while read a; read b; read c; do bags=( $a $b $c ) li=$(lowi $a $b $c) x=${bags[li]} y=${bags[$(( (li + 1) % 3 ))]} z=${bags[$(( (li + 2) % 3 ))]} c1='' for i in `seq 0 $(( ${#bags[$li]} - 1 ))`; do if [[ $y == *${x:$i:1}* ]]; then c1="${c1}${x:$i:1}" fi done for i in `seq 0 $(( ${#c1} - 1 ))`; do if [[ $z == *${c1:$i:1}* ]]; then c=${c1:$i:1} break fi done let sum+=P[$c] c='' done echo $sum