program name
    implicit none
    character(:),allocatable:: s
    integer(4):: n,i,cnt

    read*, n
    allocate(character(n):: s)
    read*, s
    cnt = 0
    do i=1,n-1
        cnt = max(cnt,snum(s(1:i), s(i+1:n)))
    end do
    print*, cnt

contains
function snum(s1, s2) result(ret)
    implicit none
    character(*):: s1, s2
    integer(4):: ret,i
    logical:: is1(ichar('a'):ichar('z')),is2(ichar('a'):ichar('z'))

    is1(:) = .false.
    is2(:) = .false.
    do i=1,len(s1)
        is1(ichar(s1(i:i))) = .true.
    end do
    do i=1,len(s2)
        is2(ichar(s2(i:i))) = .true.
    end do

    ret = 0
    do i=ichar('a'),ichar('z')
        if (is1(i) .and. is2(i)) ret=ret+1
    end do
end function snum
end program name
; ModuleID = 'FIRModule'
source_filename = "FIRModule"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"

@_QQcl.47716abac23c90a2bc90857656c15741 = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_5938/source.f\00"
@_QQEnvironmentDefaults = local_unnamed_addr constant ptr null

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #0

define void @_QQmain() local_unnamed_addr {
  %1 = alloca i32, align 4
  %2 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.47716abac23c90a2bc90857656c15741, i32 6)
  %3 = call i1 @_FortranAioInputInteger(ptr %2, ptr nonnull %1, i32 4)
  %4 = call i32 @_FortranAioEndIoStatement(ptr %2)
  %5 = load i32, ptr %1, align 4, !tbaa !3
  %6 = call i32 @llvm.smax.i32(i32 %5, i32 0)
  %7 = zext i32 %6 to i64
  %8 = call ptr @malloc(i64 %7)
  %9 = call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.47716abac23c90a2bc90857656c15741, i32 8)
  %10 = call i1 @_FortranAioInputAscii(ptr %9, ptr %8, i64 %7)
  %11 = call i32 @_FortranAioEndIoStatement(ptr %9)
  %12 = load i32, ptr %1, align 4, !tbaa !3
  %13 = add i32 %12, -1
  %14 = icmp sgt i32 %13, 0
  br i1 %14, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %0
  %15 = zext i32 %13 to i64
  %16 = sext i32 %12 to i64
  br label %17

17:                                               ; preds = %.lr.ph, %17
  %indvars.iv = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %17 ]
  %.0110 = phi i32 [ 0, %.lr.ph ], [ %28, %17 ]
  %18 = trunc i64 %indvars.iv to i32
  %19 = call i32 @llvm.smax.i32(i32 %18, i32 0)
  %20 = zext i32 %19 to i64
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %sext = shl i64 %indvars.iv.next, 32
  %21 = ashr exact i64 %sext, 32
  %22 = add nsw i64 %21, -1
  %23 = getelementptr [1 x i8], ptr %8, i64 %22
  %24 = sub nsw i64 %16, %21
  %25 = call i64 @llvm.smax.i64(i64 %24, i64 -1)
  %26 = add nsw i64 %25, 1
  %27 = call i32 @_QFPsnum(ptr %8, ptr %23, i64 %20, i64 %26)
  %28 = call i32 @llvm.smax.i32(i32 %.0110, i32 %27)
  %exitcond.not = icmp eq i64 %indvars.iv, %15
  br i1 %exitcond.not, label %._crit_edge, label %17

._crit_edge:                                      ; preds = %17, %0
  %.0.lcssa = phi i32 [ 0, %0 ], [ %28, %17 ]
  %29 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.47716abac23c90a2bc90857656c15741, i32 13)
  %30 = call i1 @_FortranAioOutputInteger32(ptr %29, i32 %.0.lcssa)
  %31 = call i32 @_FortranAioEndIoStatement(ptr %29)
  ret void
}

; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read)
define i32 @_QFPsnum(ptr nocapture readonly %0, ptr nocapture readonly %1, i64 %2, i64 %3) local_unnamed_addr #1 {
.preheader15.preheader:
  %4 = alloca [26 x i32], align 4
  %5 = alloca [26 x i32], align 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(104) %4, i8 0, i64 104, i1 false), !tbaa !3
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(104) %5, i8 0, i64 104, i1 false), !tbaa !3
  %6 = trunc i64 %2 to i32
  %7 = icmp sgt i32 %6, 0
  br i1 %7, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.preheader15.preheader
  %8 = and i64 %2, 4294967295
  %xtraiter = and i64 %2, 1
  %9 = icmp eq i64 %8, 1
  br i1 %9, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = sub nsw i64 %8, %xtraiter
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader.new ], [ %indvars.iv.next.1, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %10 = add nsw i64 %indvars.iv, -1
  %11 = getelementptr [1 x i8], ptr %0, i64 %10
  %.unpack14 = load i8, ptr %11, align 1, !tbaa !3
  %12 = zext i8 %.unpack14 to i64
  %13 = add nsw i64 %12, -97
  %14 = getelementptr [26 x i32], ptr %4, i64 0, i64 %13
  store i32 1, ptr %14, align 4, !tbaa !3
  %15 = getelementptr [1 x i8], ptr %0, i64 %indvars.iv
  %.unpack14.1 = load i8, ptr %15, align 1, !tbaa !3
  %16 = zext i8 %.unpack14.1 to i64
  %17 = add nsw i64 %16, -97
  %18 = getelementptr [26 x i32], ptr %4, i64 0, i64 %17
  store i32 1, ptr %18, align 4, !tbaa !3
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1.not = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1.not, label %._crit_edge.loopexit.unr-lcssa.loopexit, label %.lr.ph

._crit_edge.loopexit.unr-lcssa.loopexit:          ; preds = %.lr.ph
  %19 = add nuw nsw i64 %indvars.iv, 1
  br label %._crit_edge.loopexit.unr-lcssa

._crit_edge.loopexit.unr-lcssa:                   ; preds = %._crit_edge.loopexit.unr-lcssa.loopexit, %.lr.ph.preheader
  %indvars.iv.unr = phi i64 [ 0, %.lr.ph.preheader ], [ %19, %._crit_edge.loopexit.unr-lcssa.loopexit ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa
  %20 = getelementptr [1 x i8], ptr %0, i64 %indvars.iv.unr
  %.unpack14.epil = load i8, ptr %20, align 1, !tbaa !3
  %21 = zext i8 %.unpack14.epil to i64
  %22 = add nsw i64 %21, -97
  %23 = getelementptr [26 x i32], ptr %4, i64 0, i64 %22
  store i32 1, ptr %23, align 4, !tbaa !3
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %.preheader15.preheader
  %24 = trunc i64 %3 to i32
  %25 = icmp sgt i32 %24, 0
  br i1 %25, label %.lr.ph17.preheader, label %.preheader

.lr.ph17.preheader:                               ; preds = %._crit_edge
  %26 = and i64 %3, 4294967295
  %xtraiter47 = and i64 %3, 1
  %27 = icmp eq i64 %26, 1
  br i1 %27, label %.preheader.loopexit.unr-lcssa, label %.lr.ph17.preheader.new

.lr.ph17.preheader.new:                           ; preds = %.lr.ph17.preheader
  %unroll_iter49 = sub nsw i64 %26, %xtraiter47
  br label %.lr.ph17

.preheader.loopexit.unr-lcssa.loopexit:           ; preds = %.lr.ph17
  %28 = add nuw nsw i64 %indvars.iv20, 1
  br label %.preheader.loopexit.unr-lcssa

.preheader.loopexit.unr-lcssa:                    ; preds = %.preheader.loopexit.unr-lcssa.loopexit, %.lr.ph17.preheader
  %indvars.iv20.unr = phi i64 [ 0, %.lr.ph17.preheader ], [ %28, %.preheader.loopexit.unr-lcssa.loopexit ]
  %lcmp.mod48.not = icmp eq i64 %xtraiter47, 0
  br i1 %lcmp.mod48.not, label %.preheader.loopexit, label %.lr.ph17.epil

.lr.ph17.epil:                                    ; preds = %.preheader.loopexit.unr-lcssa
  %29 = getelementptr [1 x i8], ptr %1, i64 %indvars.iv20.unr
  %.unpack.epil = load i8, ptr %29, align 1, !tbaa !3
  %30 = zext i8 %.unpack.epil to i64
  %31 = add nsw i64 %30, -97
  %32 = getelementptr [26 x i32], ptr %5, i64 0, i64 %31
  store i32 1, ptr %32, align 4, !tbaa !3
  br label %.preheader.loopexit

.preheader.loopexit:                              ; preds = %.preheader.loopexit.unr-lcssa, %.lr.ph17.epil
  %.pre = load i32, ptr %5, align 4, !tbaa !3
  %.phi.trans.insert = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 1
  %.pre26 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !3
  %.phi.trans.insert27 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 2
  %.pre28 = load i32, ptr %.phi.trans.insert27, align 4, !tbaa !3
  %.phi.trans.insert29 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 3
  %.pre30 = load i32, ptr %.phi.trans.insert29, align 4, !tbaa !3
  %.phi.trans.insert31 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 4
  %.pre32 = load i32, ptr %.phi.trans.insert31, align 4, !tbaa !3
  %.phi.trans.insert33 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 5
  %.pre34 = load i32, ptr %.phi.trans.insert33, align 4, !tbaa !3
  %.phi.trans.insert35 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 6
  %.pre36 = load i32, ptr %.phi.trans.insert35, align 4, !tbaa !3
  %.phi.trans.insert37 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 7
  %.pre38 = load i32, ptr %.phi.trans.insert37, align 4, !tbaa !3
  %.phi.trans.insert39 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 8
  %.pre40 = load i32, ptr %.phi.trans.insert39, align 4, !tbaa !3
  %.phi.trans.insert41 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 9
  %.pre42 = load i32, ptr %.phi.trans.insert41, align 4, !tbaa !3
  %.phi.trans.insert43 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 10
  %.pre44 = load i32, ptr %.phi.trans.insert43, align 4, !tbaa !3
  %.phi.trans.insert45 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 11
  %.pre46 = load i32, ptr %.phi.trans.insert45, align 4, !tbaa !3
  %33 = icmp ne i32 %.pre, 0
  %34 = icmp ne i32 %.pre26, 0
  %35 = icmp ne i32 %.pre28, 0
  %36 = icmp ne i32 %.pre30, 0
  %37 = icmp ne i32 %.pre32, 0
  %38 = icmp ne i32 %.pre34, 0
  %39 = icmp ne i32 %.pre36, 0
  %40 = icmp ne i32 %.pre38, 0
  %41 = icmp ne i32 %.pre40, 0
  %42 = icmp ne i32 %.pre42, 0
  %43 = icmp ne i32 %.pre44, 0
  %44 = icmp ne i32 %.pre46, 0
  br label %.preheader

.preheader:                                       ; preds = %.preheader.loopexit, %._crit_edge
  %45 = phi i1 [ %44, %.preheader.loopexit ], [ false, %._crit_edge ]
  %46 = phi i1 [ %43, %.preheader.loopexit ], [ false, %._crit_edge ]
  %47 = phi i1 [ %42, %.preheader.loopexit ], [ false, %._crit_edge ]
  %48 = phi i1 [ %41, %.preheader.loopexit ], [ false, %._crit_edge ]
  %49 = phi i1 [ %40, %.preheader.loopexit ], [ false, %._crit_edge ]
  %50 = phi i1 [ %39, %.preheader.loopexit ], [ false, %._crit_edge ]
  %51 = phi i1 [ %38, %.preheader.loopexit ], [ false, %._crit_edge ]
  %52 = phi i1 [ %37, %.preheader.loopexit ], [ false, %._crit_edge ]
  %53 = phi i1 [ %36, %.preheader.loopexit ], [ false, %._crit_edge ]
  %54 = phi i1 [ %35, %.preheader.loopexit ], [ false, %._crit_edge ]
  %55 = phi i1 [ %34, %.preheader.loopexit ], [ false, %._crit_edge ]
  %56 = phi i1 [ %33, %.preheader.loopexit ], [ false, %._crit_edge ]
  %57 = load i32, ptr %4, align 4, !tbaa !3
  %58 = icmp ne i32 %57, 0
  %59 = and i1 %58, %56
  %60 = zext i1 %59 to i32
  %61 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 1
  %62 = load i32, ptr %61, align 4, !tbaa !3
  %63 = icmp ne i32 %62, 0
  %64 = and i1 %63, %55
  %65 = zext i1 %64 to i32
  %spec.select.1 = add nuw nsw i32 %60, %65
  %66 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 2
  %67 = load i32, ptr %66, align 4, !tbaa !3
  %68 = icmp ne i32 %67, 0
  %69 = and i1 %68, %54
  %70 = zext i1 %69 to i32
  %spec.select.2 = add nuw nsw i32 %spec.select.1, %70
  %71 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 3
  %72 = load i32, ptr %71, align 4, !tbaa !3
  %73 = icmp ne i32 %72, 0
  %74 = and i1 %73, %53
  %75 = zext i1 %74 to i32
  %spec.select.3 = add nuw nsw i32 %spec.select.2, %75
  %76 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 4
  %77 = load i32, ptr %76, align 4, !tbaa !3
  %78 = icmp ne i32 %77, 0
  %79 = and i1 %78, %52
  %80 = zext i1 %79 to i32
  %spec.select.4 = add nuw nsw i32 %spec.select.3, %80
  %81 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 5
  %82 = load i32, ptr %81, align 4, !tbaa !3
  %83 = icmp ne i32 %82, 0
  %84 = and i1 %83, %51
  %85 = zext i1 %84 to i32
  %spec.select.5 = add nuw nsw i32 %spec.select.4, %85
  %86 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 6
  %87 = load i32, ptr %86, align 4, !tbaa !3
  %88 = icmp ne i32 %87, 0
  %89 = and i1 %88, %50
  %90 = zext i1 %89 to i32
  %spec.select.6 = add nuw nsw i32 %spec.select.5, %90
  %91 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 7
  %92 = load i32, ptr %91, align 4, !tbaa !3
  %93 = icmp ne i32 %92, 0
  %94 = and i1 %93, %49
  %95 = zext i1 %94 to i32
  %spec.select.7 = add nuw nsw i32 %spec.select.6, %95
  %96 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 8
  %97 = load i32, ptr %96, align 4, !tbaa !3
  %98 = icmp ne i32 %97, 0
  %99 = and i1 %98, %48
  %100 = zext i1 %99 to i32
  %spec.select.8 = add nuw nsw i32 %spec.select.7, %100
  %101 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 9
  %102 = load i32, ptr %101, align 4, !tbaa !3
  %103 = icmp ne i32 %102, 0
  %104 = and i1 %103, %47
  %105 = zext i1 %104 to i32
  %spec.select.9 = add nuw nsw i32 %spec.select.8, %105
  %106 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 10
  %107 = load i32, ptr %106, align 4, !tbaa !3
  %108 = icmp ne i32 %107, 0
  %109 = and i1 %108, %46
  %110 = zext i1 %109 to i32
  %spec.select.10 = add nuw nsw i32 %spec.select.9, %110
  %111 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 11
  %112 = load i32, ptr %111, align 4, !tbaa !3
  %113 = icmp ne i32 %112, 0
  %114 = and i1 %113, %45
  %115 = zext i1 %114 to i32
  %spec.select.11 = add nuw nsw i32 %spec.select.10, %115
  %116 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 12
  %117 = load i32, ptr %116, align 4, !tbaa !3
  %118 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 12
  %119 = load i32, ptr %118, align 4, !tbaa !3
  %120 = icmp ne i32 %117, 0
  %121 = icmp ne i32 %119, 0
  %122 = and i1 %120, %121
  %123 = zext i1 %122 to i32
  %spec.select.12 = add nuw nsw i32 %spec.select.11, %123
  %124 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 13
  %125 = load i32, ptr %124, align 4, !tbaa !3
  %126 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 13
  %127 = load i32, ptr %126, align 4, !tbaa !3
  %128 = icmp ne i32 %125, 0
  %129 = icmp ne i32 %127, 0
  %130 = and i1 %128, %129
  %131 = zext i1 %130 to i32
  %spec.select.13 = add nuw nsw i32 %spec.select.12, %131
  %132 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 14
  %133 = load i32, ptr %132, align 4, !tbaa !3
  %134 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 14
  %135 = load i32, ptr %134, align 4, !tbaa !3
  %136 = icmp ne i32 %133, 0
  %137 = icmp ne i32 %135, 0
  %138 = and i1 %136, %137
  %139 = zext i1 %138 to i32
  %spec.select.14 = add nuw nsw i32 %spec.select.13, %139
  %140 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 15
  %141 = load i32, ptr %140, align 4, !tbaa !3
  %142 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 15
  %143 = load i32, ptr %142, align 4, !tbaa !3
  %144 = icmp ne i32 %141, 0
  %145 = icmp ne i32 %143, 0
  %146 = and i1 %144, %145
  %147 = zext i1 %146 to i32
  %spec.select.15 = add nuw nsw i32 %spec.select.14, %147
  %148 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 16
  %149 = load i32, ptr %148, align 4, !tbaa !3
  %150 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 16
  %151 = load i32, ptr %150, align 4, !tbaa !3
  %152 = icmp ne i32 %149, 0
  %153 = icmp ne i32 %151, 0
  %154 = and i1 %152, %153
  %155 = zext i1 %154 to i32
  %spec.select.16 = add nuw nsw i32 %spec.select.15, %155
  %156 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 17
  %157 = load i32, ptr %156, align 4, !tbaa !3
  %158 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 17
  %159 = load i32, ptr %158, align 4, !tbaa !3
  %160 = icmp ne i32 %157, 0
  %161 = icmp ne i32 %159, 0
  %162 = and i1 %160, %161
  %163 = zext i1 %162 to i32
  %spec.select.17 = add nuw nsw i32 %spec.select.16, %163
  %164 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 18
  %165 = load i32, ptr %164, align 4, !tbaa !3
  %166 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 18
  %167 = load i32, ptr %166, align 4, !tbaa !3
  %168 = icmp ne i32 %165, 0
  %169 = icmp ne i32 %167, 0
  %170 = and i1 %168, %169
  %171 = zext i1 %170 to i32
  %spec.select.18 = add nuw nsw i32 %spec.select.17, %171
  %172 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 19
  %173 = load i32, ptr %172, align 4, !tbaa !3
  %174 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 19
  %175 = load i32, ptr %174, align 4, !tbaa !3
  %176 = icmp ne i32 %173, 0
  %177 = icmp ne i32 %175, 0
  %178 = and i1 %176, %177
  %179 = zext i1 %178 to i32
  %spec.select.19 = add nuw nsw i32 %spec.select.18, %179
  %180 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 20
  %181 = load i32, ptr %180, align 4, !tbaa !3
  %182 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 20
  %183 = load i32, ptr %182, align 4, !tbaa !3
  %184 = icmp ne i32 %181, 0
  %185 = icmp ne i32 %183, 0
  %186 = and i1 %184, %185
  %187 = zext i1 %186 to i32
  %spec.select.20 = add nuw nsw i32 %spec.select.19, %187
  %188 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 21
  %189 = load i32, ptr %188, align 4, !tbaa !3
  %190 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 21
  %191 = load i32, ptr %190, align 4, !tbaa !3
  %192 = icmp ne i32 %189, 0
  %193 = icmp ne i32 %191, 0
  %194 = and i1 %192, %193
  %195 = zext i1 %194 to i32
  %spec.select.21 = add nuw nsw i32 %spec.select.20, %195
  %196 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 22
  %197 = load i32, ptr %196, align 4, !tbaa !3
  %198 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 22
  %199 = load i32, ptr %198, align 4, !tbaa !3
  %200 = icmp ne i32 %197, 0
  %201 = icmp ne i32 %199, 0
  %202 = and i1 %200, %201
  %203 = zext i1 %202 to i32
  %spec.select.22 = add nuw nsw i32 %spec.select.21, %203
  %204 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 23
  %205 = load i32, ptr %204, align 4, !tbaa !3
  %206 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 23
  %207 = load i32, ptr %206, align 4, !tbaa !3
  %208 = icmp ne i32 %205, 0
  %209 = icmp ne i32 %207, 0
  %210 = and i1 %208, %209
  %211 = zext i1 %210 to i32
  %spec.select.23 = add nuw nsw i32 %spec.select.22, %211
  %212 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 24
  %213 = load i32, ptr %212, align 4, !tbaa !3
  %214 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 24
  %215 = load i32, ptr %214, align 4, !tbaa !3
  %216 = icmp ne i32 %213, 0
  %217 = icmp ne i32 %215, 0
  %218 = and i1 %216, %217
  %219 = zext i1 %218 to i32
  %spec.select.24 = add nuw nsw i32 %spec.select.23, %219
  %220 = getelementptr inbounds [26 x i32], ptr %4, i64 0, i64 25
  %221 = load i32, ptr %220, align 4, !tbaa !3
  %222 = getelementptr inbounds [26 x i32], ptr %5, i64 0, i64 25
  %223 = load i32, ptr %222, align 4, !tbaa !3
  %224 = icmp ne i32 %221, 0
  %225 = icmp ne i32 %223, 0
  %226 = and i1 %224, %225
  %227 = zext i1 %226 to i32
  %spec.select.25 = add nuw nsw i32 %spec.select.24, %227
  ret i32 %spec.select.25

.lr.ph17:                                         ; preds = %.lr.ph17, %.lr.ph17.preheader.new
  %indvars.iv20 = phi i64 [ 1, %.lr.ph17.preheader.new ], [ %indvars.iv.next21.1, %.lr.ph17 ]
  %niter50 = phi i64 [ 0, %.lr.ph17.preheader.new ], [ %niter50.next.1, %.lr.ph17 ]
  %228 = add nsw i64 %indvars.iv20, -1
  %229 = getelementptr [1 x i8], ptr %1, i64 %228
  %.unpack = load i8, ptr %229, align 1, !tbaa !3
  %230 = zext i8 %.unpack to i64
  %231 = add nsw i64 %230, -97
  %232 = getelementptr [26 x i32], ptr %5, i64 0, i64 %231
  store i32 1, ptr %232, align 4, !tbaa !3
  %233 = getelementptr [1 x i8], ptr %1, i64 %indvars.iv20
  %.unpack.1 = load i8, ptr %233, align 1, !tbaa !3
  %234 = zext i8 %.unpack.1 to i64
  %235 = add nsw i64 %234, -97
  %236 = getelementptr [26 x i32], ptr %5, i64 0, i64 %235
  store i32 1, ptr %236, align 4, !tbaa !3
  %indvars.iv.next21.1 = add nuw nsw i64 %indvars.iv20, 2
  %niter50.next.1 = add i64 %niter50, 2
  %niter50.ncmp.1.not = icmp eq i64 %niter50.next.1, %unroll_iter49
  br i1 %niter50.ncmp.1.not, label %.preheader.loopexit.unr-lcssa.loopexit, label %.lr.ph17
}

declare ptr @_FortranAioBeginExternalListInput(i32, ptr, i32) local_unnamed_addr

declare i1 @_FortranAioInputInteger(ptr, ptr, i32) local_unnamed_addr

declare i32 @_FortranAioEndIoStatement(ptr) local_unnamed_addr

declare i1 @_FortranAioInputAscii(ptr, ptr, i64) local_unnamed_addr

declare ptr @_FortranAioBeginExternalListOutput(i32, ptr, i32) local_unnamed_addr

declare i1 @_FortranAioOutputInteger32(ptr, i32) local_unnamed_addr

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

attributes #0 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" }
attributes #1 = { nofree norecurse nosync nounwind memory(argmem: read) }
attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) }

!llvm.module.flags = !{!0, !1, !2}

!0 = !{i32 2, !"Debug Info Version", i32 3}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{!4, !4, i64 0}
!4 = !{!"any data access", !5, i64 0}
!5 = !{!"any access", !6, i64 0}
!6 = !{!"Flang Type TBAA Root"}
