Pizzino (meervoud: pizzini) is een Italiaans woord dat werd afgeleid van het Siciliaanse equivalent pizzinu. Naast zijn oorspronkelijke betekenis van "klein stukje papier", wordt het woord vandaag de dag meer algemeen gebruikt om te verwijzen naar de kleine handgeschreven papiertjes die de Siciliaanse maffia gebruikt als communicatiemiddel tussen de verschillende kopstukken. De Siciliaanse maffiabaas Bernardo Provenzano behoort tot de bekendste maffiosi die gebruik maakten van pizzini, met name voor zijn instructies die Messina Denaro aanwezen als zijn opvolger. De pizzini van andere maffiosi hebben aanzien geholpen bij het politieonderzoek naar de Siciliaanse maffia.

Bernardo
      Provenzano
Bernardo Provenzano (geboren op 31 januari 1933 in Corleone, Sicilië) is een lid van de Siciliaanse maffia (Cosa Nostra). Hij wordt ervan verdacht het hoofd geweest te zijn van de Corleonesi, een groepering binnen de maffia die ontstaan is in het stadje Corleone, en de facto ook de capo di tutti capi (baas der bazen) van de volledige Siciliaanse maffia tot aan zijn arrestatie in 2006. Zijn bijnaam is Binnu u tratturi (Siciliaans voor "Binnie de traktor") omdat, volgens de woorden van een informant, "hij mensen zonder verpinken omvermaait".

Provenzano verborg de pizzini met zijn instructies bij een oude schapenboerderij onder stenen of onder de grond. Eenmaal gelezen, werden ze vernietigd. Hierbij gebruikte hij een codeertechniek waarbij elke letter eerst omgezet werd naar een natuurlijk getal overeenkomstig de positie van de letter in het alfabet (A=1, B=2, …), waarna elk van deze getallen nog eens verhoogd werd met drie. De getallen die men op deze manier bekwam voor elk van de letters van een woord, werden eenvoudigweg achter elkaar gezet om zo een groot getal te bekomen. Op die manier werd mia bijvoorbeeld gecodeerd als 16124, omdat \[\mbox{m} = 13 + 3 = 16,\ \mbox{i} = 9 + 3 = 12 \mbox{ en a} = 1 + 3 = 4\] Hierbij valt op te merken dat er gebruikgemaakt werd van het Italiaanse alfabet, dat een lichtjes gewijzigde volgorde heeft en minder letters telt dan het Latijnse alfabet:

ABCDEFGHILMNOPQRSTUVZ

Alles bij elkaar gaat het om een zeer eenvoudige en zeer oude code, waarvan de enige moeilijkheid erin bestaat dat het bij het decoderen niet eenduidig is of de cijfers individueel moeten behandeld worden of in groepen van twee. Zo las één van de onderschepte pizzini van Provenzano als

Ik ontmoette 512151522 191212154 en we kwamen overeen dat we elkaar na de vakantie terug zouden zien…

De naam werd gedecodeerd als Binnu Riina. Bruce Schneider — een Amerikaanse expert in de cryptografie — zei hierover op Discovery Channel News

Looks like kindergarten cryptography to me. It will keep your kid sister out, but it won't keep the police out. But what do you expect from someone who is computer illiterate?

De Italiaanse politie kreeg de kans om heel wat pizzini te lezen toen handlangers uit de inner circle van Provenzano konden overtuigd worden om als informant op te treden. Eenmaal ze in het bezit waren van voldoende pizzini, was de politie in staat om de code snel te breken. Een biograaf van Provenzano maakt melding van het feit dat hij ook nog een meer gecompliceerde code gebruikte die op heden nog altijd niet kon ontcijferd worden, en waarbij gebruikgemaakt werd van sommige woorden die Provenzano had onderlijnd in zijn Bijbel.

Opgave

In deze opgave vragen we je om woorden te coderen als natuurlijke getallen, volgens een code die geïnspireerd is op de code die Provenzano gebruikte bij het schrijven van zijn pizzini. Hiervoor ga je als volgt te werk.

Voor beide functies stelt het derde argument een gegeven alfabet voor, waarbij je er mag van uitgaan dat elk karakter er hoogstens één keer in voorkomt. Bovendien mag je er in beide gevallen ook van uitgaan dat alle karakters van de string die als eerste argument wordt doorgegeven, voorkomen in het gegeven alfabet. Beide functies mogen ook geen onderscheid maken tussen hoofdletters en kleine letters.

Voorbeeld

>>> italiaans = 'ABCDEFGHILMNOPQRSTUVZ'
>>> codeerLetter('M', 3, italiaans)
14
>>> codeerWoord('MIA', 3, italiaans)
14124
>>> codeerWoord('Binnu', 3, italiaans)
512151522
>>> codeerWoord('Riina', 3, italiaans)
191212154

>>> latijns = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> codeerLetter('M', 3, latijns)
16
>>> codeerWoord('MIA', 3, latijns)
16124
>>> codeerWoord('Binnu', 3, latijns)
512171724
>>> codeerWoord('Riina', 3, latijns)
211212174