#abc276d. [abc276_d]Divide by 2 or 3

[abc276_d]Divide by 2 or 3

题目描述

给定一个正整数序列 A=(a1,a2,ldots,aN)A=(a_1,a_2,\\ldots,a_N)。你可以选择并执行以下操作任意次数(可能为零):

  • 选择一个整数 ii,使得 1leqileqN1 \\leq i \\leq N 并且 aia_i22 的倍数,将 aia_i 替换为 fracai2\\frac{a_i}{2}
  • 选择一个整数 ii,使得 1leqileqN1 \\leq i \\leq N 并且 aia_i33 的倍数,将 aia_i 替换为 fracai3\\frac{a_i}{3}

你的目标是使得 AA 满足 a1=a2=ldots=aNa_1=a_2=\\ldots=a_N
找到达到目标所需执行操作的最少总次数。如果无法达到目标,则输出 -1

约束条件

  • 2leqNleq10002 \\leq N \\leq 1000
  • 1leqaileq1091 \\leq a_i \\leq 10^9
  • 输入中的所有值都是整数。

输入

从标准输入读取输入数据,输入格式如下:

NN a1a_1 a2a_2 ldots\\ldots aNa_N

输出

输出答案。

样例输入 1

3
1 4 3

样例输出 1

3

以下是达到目标的一种方案,需要进行三次操作,这是最少次数。

  • 选择整数 i=2i=2,使得 aia_i22 的倍数,将 a2a_2 替换为 fraca22\\frac{a_2}{2}AA 变为 (1,2,3)(1,2,3)
  • 选择整数 i=2i=2,使得 aia_i22 的倍数,将 a2a_2 替换为 fraca22\\frac{a_2}{2}AA 变为 (1,1,3)(1,1,3)
  • 选择整数 i=3i=3,使得 aia_i33 的倍数,将 a3a_3 替换为 fraca33\\frac{a_3}{3}AA 变为 (1,1,1)(1,1,1)

样例输入 2

3
2 7 6

样例输出 2

-1

无法达到目标。

样例输入 3

6
1 1 1 1 1 1

样例输出 3

0