import java.util.Comparator;
import java.util.Scanner;

/* static int java.util.Arrays.binarySearch(int[] a, int key); */


public class Main {
    Scanner sc = new Scanner(System.in);
    int n;
    public void run(){
        n = sc.nextInt();
        solve();
    }
    public void solve(){
        // a[i]を2で割った総数
        int suma2 = 0;

        for(int i = 0; i < n; i++){
            long ai = sc.nextInt();
            int a2 = 0;
            while(ai % 2 == 0){
                a2++;
                ai /=  2;
            }

            suma2 += a2;
        }

        System.out.println(suma2);
    }

    public static void main(String[] args){
        new Main().run();
    }

    static class Pair {
        int first,second;
        public Pair(int a,int b) {
            this.first = a;
            this.second = b;
        }
    }
    static class Edge{
        int to, cost;
        public Edge(int a, int b){
            this.to = a;
            this.cost = b;
        }
    }
    class MyComparator implements Comparator {
        @Override
        public int compare (Object arg0, Object arg1) {
            int x = ((Pair)arg0).first;
            int y = ((Pair)arg1).first;

            if (x < y) {
                return 1;
            } else if (x > y) {
                return -1;
            } else{
                return 0;
            }
        }
    }
    static class UnionFind{
        int par[];
        int rank[];

        //n要素で初期化
        public UnionFind(int maxn){
            par = new int[maxn];
            rank = new int[maxn];

            for(int i = 0; i < maxn; i++){
                par[i] = i;
                rank[i] = 0;
            }
        }

        //木の根を求める
        int find(int x){
            if(par[x] == x){
                return x;
            }
            else {
                return par[x] = find(par[x]);
            }
        }

        // xとyの属する集合を併合
        void unite (int x, int y){
            x = find(x);
            y = find(y);
            if(x == y){
                return;
            }

            if(rank[x] < rank[y]){
                par[x] = y;
            }
            else{
                par[y] = x;
                if(rank[x] == rank[y]) rank[x]++;
            }
        }

        // xとyが同じ集合に属するか否か
        boolean same(int x, int y){
            return find(x) == find(y);
        }
    }

} import java.util.Comparator; Comparator java.util import java.util.Scanner; Scanner java.util public class Main {
    Scanner sc = new Scanner(System.in);
    int n;
    public void run(){
        n = sc.nextInt();
        solve();
    }
    public void solve(){
        // a[i]を2で割った総数
        int suma2 = 0;

        for(int i = 0; i < n; i++){
            long ai = sc.nextInt();
            int a2 = 0;
            while(ai % 2 == 0){
                a2++;
                ai /=  2;
            }

            suma2 += a2;
        }

        System.out.println(suma2);
    }

    public static void main(String[] args){
        new Main().run();
    }

    static class Pair {
        int first,second;
        public Pair(int a,int b) {
            this.first = a;
            this.second = b;
        }
    }
    static class Edge{
        int to, cost;
        public Edge(int a, int b){
            this.to = a;
            this.cost = b;
        }
    }
    class MyComparator implements Comparator {
        @Override
        public int compare (Object arg0, Object arg1) {
            int x = ((Pair)arg0).first;
            int y = ((Pair)arg1).first;

            if (x < y) {
                return 1;
            } else if (x > y) {
                return -1;
            } else{
                return 0;
            }
        }
    }
    static class UnionFind{
        int par[];
        int rank[];

        //n要素で初期化
        public UnionFind(int maxn){
            par = new int[maxn];
            rank = new int[maxn];

            for(int i = 0; i < maxn; i++){
                par[i] = i;
                rank[i] = 0;
            }
        }

        //木の根を求める
        int find(int x){
            if(par[x] == x){
                return x;
            }
            else {
                return par[x] = find(par[x]);
            }
        }

        // xとyの属する集合を併合
        void unite (int x, int y){
            x = find(x);
            y = find(y);
            if(x == y){
                return;
            }

            if(rank[x] < rank[y]){
                par[x] = y;
            }
            else{
                par[y] = x;
                if(rank[x] == rank[y]) rank[x]++;
            }
        }

        // xとyが同じ集合に属するか否か
        boolean same(int x, int y){
            return find(x) == find(y);
        }
    }

} Main Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int n; n public void run(){
        n = sc.nextInt();
        solve();
    } run {
        n = sc.nextInt();
        solve();
    } n = sc.nextInt() n sc.nextInt() sc.nextInt sc solve() solve public void solve(){
        // a[i]を2で割った総数
        int suma2 = 0;

        for(int i = 0; i < n; i++){
            long ai = sc.nextInt();
            int a2 = 0;
            while(ai % 2 == 0){
                a2++;
                ai /=  2;
            }

            suma2 += a2;
        }

        System.out.println(suma2);
    } solve {
        // a[i]を2で割った総数
        int suma2 = 0;

        for(int i = 0; i < n; i++){
            long ai = sc.nextInt();
            int a2 = 0;
            while(ai % 2 == 0){
                a2++;
                ai /=  2;
            }

            suma2 += a2;
        }

        System.out.println(suma2);
    } int suma2 = 0; suma2 0 for(int i = 0; i < n; i++){
            long ai = sc.nextInt();
            int a2 = 0;
            while(ai % 2 == 0){
                a2++;
                ai /=  2;
            }

            suma2 += a2;
        } int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
            long ai = sc.nextInt();
            int a2 = 0;
            while(ai % 2 == 0){
                a2++;
                ai /=  2;
            }

            suma2 += a2;
        } {
            long ai = sc.nextInt();
            int a2 = 0;
            while(ai % 2 == 0){
                a2++;
                ai /=  2;
            }

            suma2 += a2;
        } long ai = sc.nextInt(); ai sc.nextInt() sc.nextInt sc int a2 = 0; a2 0 while(ai % 2 == 0){
                a2++;
                ai /=  2;
            } ai % 2 == 0 ai % 2 ai 2 0 {
                a2++;
                ai /=  2;
            } a2++ a2 ai /=  2 ai 2 suma2 += a2 suma2 a2 System.out.println(suma2) System.out.println System.out System System.out suma2 public static void main(String[] args){
        new Main().run();
    } main {
        new Main().run();
    } new Main().run() new Main().run new Main() String[] args args static class Pair {
        int first,second;
        public Pair(int a,int b) {
            this.first = a;
            this.second = b;
        }
    } Pair int first first second; second public Pair(int a,int b) {
            this.first = a;
            this.second = b;
        } Pair {
            this.first = a;
            this.second = b;
        } this.first = a this.first this this.first a this.second = b this.second this this.second b int a a int b b static class Edge{
        int to, cost;
        public Edge(int a, int b){
            this.to = a;
            this.cost = b;
        }
    } Edge int to to cost; cost public Edge(int a, int b){
            this.to = a;
            this.cost = b;
        } Edge {
            this.to = a;
            this.cost = b;
        } this.to = a this.to this this.to a this.cost = b this.cost this this.cost b int a a int b b class MyComparator implements Comparator {
        @Override
        public int compare (Object arg0, Object arg1) {
            int x = ((Pair)arg0).first;
            int y = ((Pair)arg1).first;

            if (x < y) {
                return 1;
            } else if (x > y) {
                return -1;
            } else{
                return 0;
            }
        }
    } MyComparator @Override
        public int compare (Object arg0, Object arg1) {
            int x = ((Pair)arg0).first;
            int y = ((Pair)arg1).first;

            if (x < y) {
                return 1;
            } else if (x > y) {
                return -1;
            } else{
                return 0;
            }
        } compare {
            int x = ((Pair)arg0).first;
            int y = ((Pair)arg1).first;

            if (x < y) {
                return 1;
            } else if (x > y) {
                return -1;
            } else{
                return 0;
            }
        } int x = ((Pair)arg0).first; x ((Pair)arg0).first ((Pair)arg0) ((Pair)arg0).first int y = ((Pair)arg1).first; y ((Pair)arg1).first ((Pair)arg1) ((Pair)arg1).first if (x < y) {
                return 1;
            } else if (x > y) {
                return -1;
            } else{
                return 0;
            } x < y x y {
                return 1;
            } return 1; 1 if (x > y) {
                return -1;
            } else{
                return 0;
            } x > y x y {
                return -1;
            } return -1; -1 1 {
                return 0;
            } return 0; 0 Object arg0 arg0 Object arg1 arg1 Comparator static class UnionFind{
        int par[];
        int rank[];

        //n要素で初期化
        public UnionFind(int maxn){
            par = new int[maxn];
            rank = new int[maxn];

            for(int i = 0; i < maxn; i++){
                par[i] = i;
                rank[i] = 0;
            }
        }

        //木の根を求める
        int find(int x){
            if(par[x] == x){
                return x;
            }
            else {
                return par[x] = find(par[x]);
            }
        }

        // xとyの属する集合を併合
        void unite (int x, int y){
            x = find(x);
            y = find(y);
            if(x == y){
                return;
            }

            if(rank[x] < rank[y]){
                par[x] = y;
            }
            else{
                par[y] = x;
                if(rank[x] == rank[y]) rank[x]++;
            }
        }

        // xとyが同じ集合に属するか否か
        boolean same(int x, int y){
            return find(x) == find(y);
        }
    } UnionFind int par[]; par int rank[]; rank //n要素で初期化
        public UnionFind(int maxn){
            par = new int[maxn];
            rank = new int[maxn];

            for(int i = 0; i < maxn; i++){
                par[i] = i;
                rank[i] = 0;
            }
        } UnionFind {
            par = new int[maxn];
            rank = new int[maxn];

            for(int i = 0; i < maxn; i++){
                par[i] = i;
                rank[i] = 0;
            }
        } par = new int[maxn] par new int[maxn] maxn rank = new int[maxn] rank new int[maxn] maxn for(int i = 0; i < maxn; i++){
                par[i] = i;
                rank[i] = 0;
            } int i = 0; int i = 0; i 0 i < maxn i maxn i++ i++ i {
                par[i] = i;
                rank[i] = 0;
            } {
                par[i] = i;
                rank[i] = 0;
            } par[i] = i par[i] par i i rank[i] = 0 rank[i] rank i 0 int maxn maxn //木の根を求める
        int find(int x){
            if(par[x] == x){
                return x;
            }
            else {
                return par[x] = find(par[x]);
            }
        } find {
            if(par[x] == x){
                return x;
            }
            else {
                return par[x] = find(par[x]);
            }
        } if(par[x] == x){
                return x;
            }
            else {
                return par[x] = find(par[x]);
            } par[x] == x par[x] par x x {
                return x;
            } return x; x {
                return par[x] = find(par[x]);
            } return par[x] = find(par[x]); par[x] = find(par[x]) par[x] par x find(par[x]) find par[x] par x int x x // xとyの属する集合を併合
        void unite (int x, int y){
            x = find(x);
            y = find(y);
            if(x == y){
                return;
            }

            if(rank[x] < rank[y]){
                par[x] = y;
            }
            else{
                par[y] = x;
                if(rank[x] == rank[y]) rank[x]++;
            }
        } unite {
            x = find(x);
            y = find(y);
            if(x == y){
                return;
            }

            if(rank[x] < rank[y]){
                par[x] = y;
            }
            else{
                par[y] = x;
                if(rank[x] == rank[y]) rank[x]++;
            }
        } x = find(x) x find(x) find x y = find(y) y find(y) find y if(x == y){
                return;
            } x == y x y {
                return;
            } return; if(rank[x] < rank[y]){
                par[x] = y;
            }
            else{
                par[y] = x;
                if(rank[x] == rank[y]) rank[x]++;
            } rank[x] < rank[y] rank[x] rank x rank[y] rank y {
                par[x] = y;
            } par[x] = y par[x] par x y {
                par[y] = x;
                if(rank[x] == rank[y]) rank[x]++;
            } par[y] = x par[y] par y x if(rank[x] == rank[y]) rank[x]++; rank[x] == rank[y] rank[x] rank x rank[y] rank y rank[x]++ rank[x] rank x int x x int y y // xとyが同じ集合に属するか否か
        boolean same(int x, int y){
            return find(x) == find(y);
        } same {
            return find(x) == find(y);
        } return find(x) == find(y); find(x) == find(y) find(x) find x find(y) find y int x x int y y public class Main {
    Scanner sc = new Scanner(System.in);
    int n;
    public void run(){
        n = sc.nextInt();
        solve();
    }
    public void solve(){
        // a[i]を2で割った総数
        int suma2 = 0;

        for(int i = 0; i < n; i++){
            long ai = sc.nextInt();
            int a2 = 0;
            while(ai % 2 == 0){
                a2++;
                ai /=  2;
            }

            suma2 += a2;
        }

        System.out.println(suma2);
    }

    public static void main(String[] args){
        new Main().run();
    }

    static class Pair {
        int first,second;
        public Pair(int a,int b) {
            this.first = a;
            this.second = b;
        }
    }
    static class Edge{
        int to, cost;
        public Edge(int a, int b){
            this.to = a;
            this.cost = b;
        }
    }
    class MyComparator implements Comparator {
        @Override
        public int compare (Object arg0, Object arg1) {
            int x = ((Pair)arg0).first;
            int y = ((Pair)arg1).first;

            if (x < y) {
                return 1;
            } else if (x > y) {
                return -1;
            } else{
                return 0;
            }
        }
    }
    static class UnionFind{
        int par[];
        int rank[];

        //n要素で初期化
        public UnionFind(int maxn){
            par = new int[maxn];
            rank = new int[maxn];

            for(int i = 0; i < maxn; i++){
                par[i] = i;
                rank[i] = 0;
            }
        }

        //木の根を求める
        int find(int x){
            if(par[x] == x){
                return x;
            }
            else {
                return par[x] = find(par[x]);
            }
        }

        // xとyの属する集合を併合
        void unite (int x, int y){
            x = find(x);
            y = find(y);
            if(x == y){
                return;
            }

            if(rank[x] < rank[y]){
                par[x] = y;
            }
            else{
                par[y] = x;
                if(rank[x] == rank[y]) rank[x]++;
            }
        }

        // xとyが同じ集合に属するか否か
        boolean same(int x, int y){
            return find(x) == find(y);
        }
    }

} public class Main {
    Scanner sc = new Scanner(System.in);
    int n;
    public void run(){
        n = sc.nextInt();
        solve();
    }
    public void solve(){
        // a[i]を2で割った総数
        int suma2 = 0;

        for(int i = 0; i < n; i++){
            long ai = sc.nextInt();
            int a2 = 0;
            while(ai % 2 == 0){
                a2++;
                ai /=  2;
            }

            suma2 += a2;
        }

        System.out.println(suma2);
    }

    public static void main(String[] args){
        new Main().run();
    }

    static class Pair {
        int first,second;
        public Pair(int a,int b) {
            this.first = a;
            this.second = b;
        }
    }
    static class Edge{
        int to, cost;
        public Edge(int a, int b){
            this.to = a;
            this.cost = b;
        }
    }
    class MyComparator implements Comparator {
        @Override
        public int compare (Object arg0, Object arg1) {
            int x = ((Pair)arg0).first;
            int y = ((Pair)arg1).first;

            if (x < y) {
                return 1;
            } else if (x > y) {
                return -1;
            } else{
                return 0;
            }
        }
    }
    static class UnionFind{
        int par[];
        int rank[];

        //n要素で初期化
        public UnionFind(int maxn){
            par = new int[maxn];
            rank = new int[maxn];

            for(int i = 0; i < maxn; i++){
                par[i] = i;
                rank[i] = 0;
            }
        }

        //木の根を求める
        int find(int x){
            if(par[x] == x){
                return x;
            }
            else {
                return par[x] = find(par[x]);
            }
        }

        // xとyの属する集合を併合
        void unite (int x, int y){
            x = find(x);
            y = find(y);
            if(x == y){
                return;
            }

            if(rank[x] < rank[y]){
                par[x] = y;
            }
            else{
                par[y] = x;
                if(rank[x] == rank[y]) rank[x]++;
            }
        }

        // xとyが同じ集合に属するか否か
        boolean same(int x, int y){
            return find(x) == find(y);
        }
    }

} Main
import java.util.Comparator;
import java.util.Scanner;

/* static int java.util.Arrays.binarySearch(int[] a, int key); */


public class Main {
    Scanner sc = new Scanner(System.in);
    int n;
    public void run(){
        n = sc.nextInt();
        solve();
    }
    public void solve(){
        // a[i]を2で割った総数
        int suma2 = 0;

        for(int i = 0; i < n; i++){
            long ai = sc.nextInt();
            int a2 = 0;
            while(ai % 2 == 0){
                a2++;
                ai /=  2;
            }

            suma2 += a2;
        }

        System.out.println(suma2);
    }

    public static void main(String[] args){
        new Main().run();
    }

    static class Pair {
        int first,second;
        public Pair(int a,int b) {
            this.first = a;
            this.second = b;
        }
    }
    static class Edge{
        int to, cost;
        public Edge(int a, int b){
            this.to = a;
            this.cost = b;
        }
    }
    class MyComparator implements Comparator {
        @Override
        public int compare (Object arg0, Object arg1) {
            int x = ((Pair)arg0).first;
            int y = ((Pair)arg1).first;

            if (x < y) {
                return 1;
            } else if (x > y) {
                return -1;
            } else{
                return 0;
            }
        }
    }
    static class UnionFind{
        int par[];
        int rank[];

        //n要素で初期化
        public UnionFind(int maxn){
            par = new int[maxn];
            rank = new int[maxn];

            for(int i = 0; i < maxn; i++){
                par[i] = i;
                rank[i] = 0;
            }
        }

        //木の根を求める
        int find(int x){
            if(par[x] == x){
                return x;
            }
            else {
                return par[x] = find(par[x]);
            }
        }

        // xとyの属する集合を併合
        void unite (int x, int y){
            x = find(x);
            y = find(y);
            if(x == y){
                return;
            }

            if(rank[x] < rank[y]){
                par[x] = y;
            }
            else{
                par[y] = x;
                if(rank[x] == rank[y]) rank[x]++;
            }
        }

        // xとyが同じ集合に属するか否か
        boolean same(int x, int y){
            return find(x) == find(y);
        }
    }

}