Programming contests

ECN selejtező programozó csapatverseny, 2015. április 19.

April 19, 2015, 10:10 AM – April 19, 2015, 3:10 PM

Anti Brute Force Lock

Lately, there is a serious problem with Panda Land Safe Box: several safes have been robbed! The safes are using old 4-digit rolling lock combination (you only have to roll the digit, either up or down, until all four of them match the key). Each digit is designed to roll from 0 to 9. Rolling up at 9 will make the digit become 0, and rolling down at 0 will make the digit become 9. Since there are only 10000 possible keys (0000 through 9999), anyone can try all the combinations until the safe is unlocked.

What's done is done. But in order to slow down future robbers' attack, Panda Security Agency (PSA) has devised a new safer lock with multiple keys. Instead of using only one key combination as the key, the lock now can have up to N keys, all of which have to be unlocked before the safe can be opened. These locks work as follows:

  • Initially the digits are at 0000.
  • Keys can be unlocked in any order, by setting the digits in the lock to match the desired key and then pressing the UNLOCK button.
  • A magic JUMP button can turn the digits into any of the unlocked keys without doing any rolling.
  • The safe will be unlocked if and only if all the keys are unlocked in a minimum total amount of rolling, excluding JUMP (yes, this feature is the coolest one).
  • If the number of rolling is exceeded, then the digits will be reset to 0000, and all the keys will be locked again. In other words, the state of the lock will be reset, and the cracking fails.

PSA is quite confident that this new system will slow down the cracking, giving them enough time to identify and catch the robbers. In order to determine the minimum number of rolling needed, PSA wants you to write a program. Given all the keys, calculate the minimum number of rolls needed to unlock the safe.

Input Specification

The first line of the input contains an integer T, the number of test cases that follow. Each case consists of a line, beginning with an integer N (1 ≤ N ≤ 500), the number of keys, followed by N numbers, each containing exactly four digits (leading zeros allowed), representing the keys to be unlocked.

Output Specification

For each case, print in a single line the minimum number of rolls needed to unlock all the keys.

Sample Input

  1. 4
  2. 2 1155 2211
  3. 3 1111 1155 5511
  4. 3 1234 5678 9090
  5. 4 2145 0213 9113 8113
download as text file

Output for Sample Input

  1. 16
  2. 20
  3. 26
  4. 17
download as text file

Explanation for the 2nd case:

  • Turn 0000 into 1111, rolls: 4.
  • Turn 1111 into 1155, rolls: 8.
  • Jump 1155 into 1111, we can do this because 1111 has been unlocked before.
  • Turn 1111 into 5511, rolls: 8.

Total rolls: 4 + 8 + 8 = 20.

University of Debrecen; Faculty of Informatics; v. 09/30/2024